%!PS-Adobe-2.0
%%Creator: dvips by Radical Eye Software
%%Title: submit.dvi
%%Pages: 11 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginDocument: tex.pro
/showVM{}def /printVM{}def(Start dvips output)print vmstatus(  VM-max: )print
(        )cvs print( VM-used: )print(        )cvs print pop(\n)print flush
/TeXDict 230 dict def TeXDict begin /bdf{bind def}def /Inch{Resolution mul}
bdf /Points{72 div Resolution mul}bdf /Dots{}bdf /Cm{2.54 div Resolution mul}
bdf /dopage{72 Resolution div dup neg scale translate}bdf /USformat false def
/@letter{Resolution dup -10 mul dopage /USformat true def}bdf /@note{@letter}
bdf /@legal{Resolution dup -13 mul dopage}bdf /A4format false def /@a4{
Resolution dup -10.6929133858 mul dopage /A4format true def}bdf /@a4offset{21
2.54 div 72 mul 0 translate -1 1 scale Resolution dup -10.6929133858 mul
dopage}bdf /@a3{72 72 translate Resolution dup -10.6929133858 mul dopage}bdf
/@a3offset{21 2.54 div 72 mul 0 translate -1 1 scale 72 72 translate
Resolution dup -10.6929133858 mul dopage}bdf /@a4upa3{29.7 21 div dup scale
Resolution dup -10.6929133858 mul dopage}bdf /@aptex{Resolution dup
-10.6929133858 mul dopage}bdf /@defaultFormat /@letter load def /@translate{
translate}bdf /@scale{scale}bdf /@rotate{rotate}bdf /@landscape{[0 1 -1 0 0 0]
concat Resolution dup dopage}bdf /@manualfeed{statusdict /manualfeed true put}
bdf /@copies{/#copies exch def}bdf /@letterhead{}bdf /LetterHead false def
/filename()def /dateandtime()def /isTwoUp false def /isReverse false def
/PageNumber 0 def /Odd-Page false def /TypeSetter false def /LetterTray 1 def
statusdict begin currentdict /defaultpapertray known{/DefaultTray
defaultpapertray def}if end /@FontMatrix[1 0 0 -1 0 0]def /@FontBBox[0 0 1 1]
def /dmystr(ZZf@@)def /newname{dmystr cvn}bdf /df{/fontname exch def dmystr 2
fontname cvx(@@@)cvs putinterval newname 7 dict def newname load begin
/FontType 3 def /FontMatrix @FontMatrix def /FontBBox @FontBBox def /BitMaps
256 array def /BuildChar{CharBuilder}def /Encoding TeXEncoding def end
fontname{/foo setfont}2 array copy cvx def fontname load 0 dmystr 5 string
copy cvn cvx put printVM}bdf /dfe{newname newname load definefont setfont}bdf
/ch-image{ch-data 0 get}bdf /ch-width{ch-data 1 get}bdf /ch-height{ch-data 2
get}bdf /ch-xoff{ch-data 3 get .1 add}bdf /ch-yoff{ch-data 4 get .1 sub}bdf
/ch-tfmw{ch-data 5 get}bdf /CharBuilder{save 3 1 roll exch /BitMaps get exch
get /ch-data exch def ch-data null ne{ch-tfmw 0 ch-xoff neg ch-yoff neg
ch-width ch-xoff sub ch-height ch-yoff sub setcachedevice ch-width ch-height
true[1 0 0 1 ch-xoff ch-yoff]{ch-image}imagemask}if restore}bdf /dc{/ch-code
exch def dup 0 get length 1 lt{pop[<00>1 1 0 0 8.00]}if /ch-data exch def
newname load /BitMaps get ch-code ch-data put}bdf /@onetick{newpath -0.3 Cm 0
moveto -1 Cm 0 rlineto 1.3 Cm -1.3 Cm rmoveto 0 1 Cm rlineto stroke}def
/@drawpagemarks{gsave 1 Dots setlinewidth -1 Inch Yoffset translate @onetick
gsave 21 Cm 0 translate 90 rotate @onetick grestore gsave 21 Cm 29.7 Cm
translate 180 rotate @onetick grestore gsave 0 29.7 Cm translate -90 rotate
@onetick grestore 0.5 Cm 30.5 Cm moveto /Helvetica findfont[30 0 0 -30 0 0]
makefont setfont(File:  )filename show(   dvips run date:  )show dateandtime
show(   Page:  )show pagenumber(      )cvs show 18 Cm 30.5 Cm moveto 1 0 0
setrgbcolor 0.5 Cm 0 rlineto stroke 19 Cm 30.5 Cm moveto 0 1 0 setrgbcolor 0.5
Cm 0 rlineto stroke 20 Cm 30.5 Cm moveto 0 0 1 setrgbcolor 0.5 Cm 0 rlineto
stroke grestore}def /bop{/pagenumber exch def(Printing page: )print pagenumber
(    )cvs print vmstatus(  VM-max: )print(        )cvs print( VM-used: )print
(        )cvs print pop(\n)print flush LetterHead{[0 0 0 0 0 0]currentmatrix
statusdict begin currentdict /defaultpapertray known{pagenumber 1 eq{
/DefaultTray defaultpapertray def LetterTray setpapertray}{DefaultTray
setpapertray}ifelse}if end setmatrix}if pagenumber dup 2 div cvi 2 mul ne
/Odd-Page exch def gsave /SaveImage save def isTwoUp{A4format{-90 rotate -29.7
2.54 add Cm -2.54 Cm translate 2.54 21 29.7 div mul Cm dup translate Odd-Page{
29.7 2 div Cm 0 translate}if 21 29.7 div dup scale}if USformat{-90 rotate -11
1 add Inch -1 Inch translate 1 8.5 11 div mul Inch dup translate Odd-Page{11 2
div Inch 0 translate}if 8.5 11 div dup scale}if}if TypeSetter{pagenumber
@drawpagemarks}if 0 0 moveto}bdf /eop{showVM clear SaveImage restore isTwoUp
not isReverse Odd-Page xor or{showpage}if grestore}bdf /eod{isTwoUp isReverse
Odd-Page xor not and{showpage}if}bdf /@start{/Resolution exch def /TeXEncoding
256 array def 0 1 255{TeXEncoding exch 1 string dup 0 3 index put cvn put}for}
bdf /p{show}bdf /RuleMatrix[1 0 0 -1 0 -1]def /BlackDots 8 string def /v{
gsave currentpoint translate newpath 0 0 moveto dup 0 exch neg rlineto exch 0
rlineto 0 exch rlineto closepath fill grestore}bdf /v{gsave currentpoint
translate false RuleMatrix{BlackDots}imagemask grestore}bdf /a{moveto}bdf
/delta 0 def /tail{dup /delta exch def 0 rmoveto}bdf /b{exch p tail}bdf /c{p
delta 4 sub tail}bdf /d{p delta 3 sub tail}bdf /e{p delta 2 sub tail}bdf /f{p
delta 1 sub tail}bdf /g{p delta 0 rmoveto}bdf /h{p delta 1 add tail}bdf /i{p
delta 2 add tail}bdf /j{p delta 3 add tail}bdf /k{p delta 4 add tail}bdf /l{p
-4 0 rmoveto}bdf /m{p -3 0 rmoveto}bdf /n{p -2 0 rmoveto}bdf /o{p -1 0 rmoveto
}bdf /q{p 1 0 rmoveto}bdf /r{p 2 0 rmoveto}bdf /s{p 3 0 rmoveto}bdf /t{p 4 0
rmoveto}bdf /w{0 rmoveto}bdf /x{0 exch rmoveto}bdf /y{3 -1 roll p moveto}bdf
/bos{/section save def}bdf /eos{clear section restore}bdf /SDict 200 dict def
SDict begin /@SpecialDefaults{/hs 8.5 Inch def /vs 11 Inch def /ho 0 def /vo 0
def /hsc 1 def /vsc 1 def /ang 0 def /CLIP false def /BBcalc false def}bdf
/@hsize{/hs exch def /CLIP true def}bdf /@vsize{/vs exch def /CLIP true def}
bdf /@hoffset{/ho exch def}bdf /@voffset{/vo exch def}bdf /@hscale{@scaleunit
div /hsc exch def}bdf /@vscale{@scaleunit div /vsc exch def}bdf /@angle{/ang
exch def}bdf /@scaleunit 100 def /@rwi{10 div /rwi exch def}bdf /@llx{/llx
exch def}bdf /@lly{/lly exch def}bdf /@urx{/urx exch def}bdf /@ury{/ury exch
def /BBcalc true def}bdf /@setclipper{BBcalc{rwi urx llx sub div dup scale llx
neg lly neg translate}{hsc vsc scale}ifelse CLIP{newpath 0 0 moveto hs 0
rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}{initclip}ifelse}bdf end
/@MacSetUp{userdict begin /letter{}def /legal{}def /tab{}def /a4{}def /b5{}
def /a4small{}def /a3Size{}def /lettersmall{}def /note{}def /showpage{}def
/erasepage{}def /copypage{}def end userdict /md known{userdict /md get type
/dicttype eq{md begin /bigs[lnop lnop lnop lnop lnop lnop lnop lnop lnop lnop]
def /smalls[lnop lnop lnop lnop lnop lnop lnop lnop lnop lnop]def end}if}if}
def /psf$TeXscale{65782 div}def /startTexFig{(startTeXFig)print vmstatus
(  VM-max: )print(        )cvs print( VM-used: )print(        )cvs print pop
(\n)print flush /psf$SavedState save def userdict maxlength dict begin
Resolution 72 div dup neg scale currentpoint translate /psf$ury exch
psf$TeXscale def /psf$urx exch psf$TeXscale def /psf$lly exch psf$TeXscale def
/psf$llx exch psf$TeXscale def /psf$y exch psf$TeXscale def /psf$x exch
psf$TeXscale def currentpoint /psf$cy exch def /psf$cx exch def /psf$sx psf$x
psf$urx psf$llx sub div def /psf$sy psf$y psf$ury psf$lly sub div def psf$sx 0
eq{/psf$sx 1 def(psf$sx = 0\n)print flush}if psf$sy 0 eq{/psf$sy 1 def
(psf$sy = 0\n)print flush}if psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub
psf$cy psf$sy div psf$ury sub translate @MacSetUp}def /dorotateplus{
currentpoint /origy exch def /origx exch def currentpoint translate 90 rotate
psf$llx psf$urx sub 0 translate origx neg origy neg translate}def
/dorotateminus{currentpoint /origy exch def /origx exch def currentpoint
translate -90 rotate 0 psf$ury psf$lly sub translate origx neg origy neg
translate}def /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto
closepath clip newpath moveto}def /endTexFig{end psf$SavedState restore
(endTexFig)print vmstatus(  VM-max: )print(        )cvs print( VM-used: )
print(        )cvs print pop(\n)print flush}def /@beginspecial{SDict begin
/SpecialSave save def gsave Resolution 72 div dup neg scale currentpoint
translate @SpecialDefaults}bdf /@setspecial{ho vo translate @setclipper ang
rotate /showpage{}def newpath}bdf /@endspecial{grestore clear SpecialSave
restore end}bdf /@defspecial{SDict begin}bdf /@fedspecial{end}bdf /li{lineto}
bdf /rl{rlineto}bdf /rc{rcurveto}bdf /np{/SaveX currentpoint /SaveY exch def
def newpath}bdf /st{stroke SaveX SaveY moveto}bdf /fil{fill SaveX SaveY moveto
}bdf /ellipse{/endangle exch def /startangle exch def /yrad exch def /xrad
exch def /savematrix matrix currentmatrix def translate xrad yrad scale 0 0 1
startangle endangle arc savematrix setmatrix}bdf end
%%EndDocument
%%BeginDocument: tray.pro
TeXDict begin /@letterhead{/LetterTray 1 def /LetterHead true def}def end
%%EndDocument
TeXDict begin 300 @start /fa df[<FFFF80FFFF8007F00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00007
F000FFFF80FFFF80>17 49 -3 0 23]73 dc[<FFF800001000FFF8000030000F80000030000700
0000700002000000700002000000F00002000001F00002000001F00002000003F00002000003F0
0002000007D0000200000FD0000200000F90000200001F10000200001F10000200003E10000200
007E10000200007C1000020000F81000020000F81000020001F01000020003F01000020003E010
00020007C0100002000FC0100002000F80100002001F80100002001F00100002003E0010000200
7E00100002007C0010000200FC0010000200F80010000201F00010000203F00010000203E00010
000207E00010000207C0001000020F80001000021F80001000021F00001000023E00001000023E
00001000027C0000100002FC0000100002F80000380003F000007C00FFF00007FFC0FFE00007FF
C0>42 49 -4 0 50]78 dc[<00003FC000000001E07800000007000E0000001C00038000003800
01C00000F00000F00001E00000780003C000003C0003C000003C00078000001E000F0000000F00
0F0000000F001E00000007801E00000007803E00000007C03C00000003C07C00000003E07C0000
0003E07C00000003E07C00000003E0F800000001F0F800000001F0F800000001F0F800000001F0
F800000001F0F800000001F0F800000001F0F800000001F0F800000001F0F800000001F0F80000
0001F07800000001E07800000001E07C00000003E07C00000003E03C00000003C03C00000003C0
1E00000007801E00000007800F0000000F000F0000000F00078000001E00038000001C0003C000
003C0001E00000780000F00000F00000380001C000001C000380000007000E00000001C0380000
00003FC00000>44 51 -4 1 52]79 dc[<800FF000807FFC00C1F01E00C7000700EC000380F800
01C0F00000E0E00000E0E00000F0C0000070C00000788000007880000078800000788000007880
000078000000F8000000F8000000F0000001F0000003F0000007E000001FE00000FFC0000FFF80
00FFFF0003FFFC0007FFF8000FFF80001FF800003FC000003F0000007E0000007C000000F80000
00F8000020F0000020F0000020F0000020F0000060F000006070000060700000E0780000E03800
01E03C0003E01E0006E00F001C6007C0786001FFE020007F8020>29 51 -4 1 37]83 dc[<000F
FFFF8000000FFFFF800000001FC0000000000F80000000000F80000000000F80000000000F8000
0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000
0F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000
0F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
0080000F80001080000F80001080000F80001080000F80001080000F80001080000F800010C000
0F800030C0000F80003040000F80002040000F80002060000F80006070000F8000E078000F8001
E07E000F8007E07FFFFFFFFFE07FFFFFFFFFE0>44 49 -2 0 48]84 dc[<03FC03E00F0307F03E
008F087C005E0478003E04F8003E04F8003E04F8001E04F8001E04F8001E047C001E003C001E00
3E001E001F001E000F801E0003E01E0000FC1E00000FFE0000001E0000001E0000001E0008001E
003E001E003E001E003E001C003C003C0010003800100070000C00E0000303C00000FE0000>30
31 -3 0 33]97 dc[<003F8000E0600380180700040F00021E00021E00013C00017C00007C0000
780000F80000F80000F80000F80000F80000F80000F80000F80000F800007800007C00087C003E
3C003E1C003E1E001E0F000407000403801800E060003F80>24 31 -3 0 29]99 dc[<001FC000
00F0300001C00C00078002000F0002000E0001001E0000803C0000803C0000007C000000780000
00F8000000F8000000F8000000F8000000F8000000F8000000FFFFFF80F8000780F80007807800
078078000F807C000F003C000F001C000F001E001E000E001E0007003C000380380000E0E00000
3F8000>25 31 -2 0 29]101 dc[<003FE00001C01C00070007001C0001C0380000E070000070
70000070E0000038E0000038E0000038E0000038E000003870000070300000F0180001E00E000F
C003FFFF8007FFFF000FFFF8000E0000001C000000180000001800000018000000180000001800
0000087F000009C1C0000780E000070070000F0078001E003C001E003C003E003E003E003E003E
003E003E003E003E003E003E003E001E003C001E003C000F007800070070080380E81C01C1C41C
007F0308000000F0>30 47 -2 15 33]103 dc[<FFFC1FFF80FFFC1FFF800FC001F800078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F00007C000F00007C000F00007A000F00007A001E00007
9001E000078C03C00007830780000780FE00000780000000078000000007800000000780000000
078000000007800000000780000000078000000007800000000780000000078000000007800000
000780000000078000000007800000000F80000000FF80000000FF800000000780000000>33 50
-2 0 37]104 dc[<FFF8FFF80FC007800780078007800780078007800780078007800780078007
80078007800780078007800780078007800780078007800F80FF80FF8007800000000000000000
000000000000000000000000000007000F801F801F800F800700>13 48 -2 0 18]105 dc[<FF
FCFFFC0FC007800780078007800780078007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800780078007800780078007800F80FF80FF800780>14 50 -2 0 18]108 dc[<FFFC1FFF83FF
F0FFFC1FFF83FFF00FC001F8003F00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
C000F8001E0007C000F8001E0007A000F4001E0007A001E4003C000F9001E2003C00FF8C03C180
7800FF83078060F0000780FE001FC000>52 31 -2 0 56]109 dc[<FFFC1FFF80FFFC1FFF800F
C001F800078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F00007C000F00007C000F00007A000
F00007A001E0000F9001E000FF8C03C000FF830780000780FE0000>33 31 -2 0 37]110 dc[<
001FC00000F0780001C01C0007800F000F0007801E0003C01E0003C03C0001E03C0001E07C0001
F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F87800
00F0780000F0780000F03C0001E03C0001E01C0001C01E0003C00F0007800700070001C01C0000
F07800001FC000>29 31 -2 0 33]111 dc[<FFFC0000FFFC00000FC000000780000007800000
0780000007800000078000000780000007800000078000000780000007800000078000000781F8
0007860F000798038007A001E007A000F007C000F0078000780780007C0780003C0780003E0780
003E0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F0780001F07
80001E0780003E0780003C0780003C0780007807C0007807A000F00F9001E0FF8803C0FF860700
0781FC00>32 45 -2 14 37]112 dc[<FFFE00FFFE000FC0000780000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000780000780000780
0007800007C00007C00007C00007C03807A07C0F907CFF907CFF8C180783E0>22 31 -2 0 25]
114 dc[<80FE00C301C0CC0060F00030F00038E00018E0001CC0001CC0001C80001C80003C8000
3C0000F80001F8003FF003FFE00FFFC01FFF003FF0007E0000F80000F00010E00010E00010E000
10E000306000303000701800F00E033001FC10>22 31 -2 0 26]115 dc[<001F000078C000E0
4001E02001C02003C01003C01003C01003C01003C01003C01003C01003C01003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
00FFFFE01FFFE00FC00007C00003C00001C00001C00000C00000C00000C0000040000040000040
00004000004000>20 44 -1 0 25]116 dc[<001FC0FF80007030FF8001C008F80003C004F000
038002F000078001F000078001F000078001F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000F80
01F000FF801FF000FF801FF000078000F000>33 31 -2 0 37]117 dc[<1F8000000030400000
007030000000F810000000F808000000F80C000000700400000000040000000002000000000200
0000000100000000010000000001000000000080000000008000000001C000000001C000000001
C000000003E000000003E000000007D0000000079000000007900000000F080000000F08000000
1F040000001E040000001E040000003C020000003C020000007C01000000780100000078010000
00F000800000F000800001F000400001E000400001E000400003C000200003C000200007C00030
0007800038000FC0007C00FFF801FF80FFF801FF80>33 45 -1 14 35]121 dc dfe /fb df[<
7FFFFE7FFFFE7FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
00FE0000FE0000FE0000FE0000FE0000FE00F8FE00FFFE00FFFE0007FE00007E00001E00000E00
>23 39 -5 0 34]49 dc[<FFFFFF80FFFFFF80FFFFFF807FFFFFC03FFFFFC01FFFFFC00FFFFFC0
070001C0038001C001C001C000E000E0007000E0003C00E0001E0000000F0000000780000003E0
000003F0000001F8000000FC000000FE0000007F0000007F8000003FC000003FC000003FE03C00
3FE07E001FE0FF001FE0FF001FE0FF003FE0FF003FC0FE003FC07C007F803800FF001F03FE000F
FFFC0003FFF00000FF8000>27 39 -3 0 34]50 dc[<00FF800007FFF0001FFFFC003F01FE007C
007F007E007F80FF007FC0FF003FC0FF003FE0FF003FE07E003FE03C003FE000003FE000003FE0
00003FC000003FC000007F8000007F0000007E000001FC0000FFF00000FFC0000007F0000001F8
000001FC000000FE000000FF000000FF000F007F801F807F803F807F803F807F803F807F803F80
FF001F00FF000F81FE0007FFFC0003FFF000007F8000>27 39 -3 0 34]51 dc[<007FFFF8007F
FFF8007FFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00FF
FFFFF8FFFFFFF8FFFFFFF8E0007E0070007E0038007E001C007E000E007E000E007E0007007E00
03807E0001C07E0000E07E0000E07E0000707E0000387E00001C7E00000E7E00000E7E0000077E
000003FE000001FE000000FE000000FE0000007E0000003E0000001E0000000E00>29 39 -2 0
34]52 dc[<00FF800003FFF0000FFFF8001F01FE003C007F0078003F8078003F80FC001FC0FE00
1FC0FE001FE0FE001FE0FE001FE07C001FE018001FE000001FE000001FE000001FC000001FC000
001F800C003F000E003E000F80FC000FFFF8000E7FC0000E0000000E0000000E0000000E000000
0E0000000E0000000FFE00000FFFC0000FFFE0000FFFF0000FFFF8000FFFFC000FFFFE000F803F
000C000300>27 39 -3 0 34]53 dc[<003FC00000FFF00003FFFC0007E07E000FC03F001F803F
801F801FC03F001FC03F001FE07F001FE07F001FE07F001FE07F001FE0FF001FE0FF001FE0FF00
1FE0FF001FC0FF801FC0FF801F80FFC03F00FFC03E00FF707C00FF3FF800FF0FC000FF0000007F
0000007F0000007F0000003F8000003F801F001F803F801FC03F800FC03F8007E03F8003F01F80
01FC0F0000FFFE00003FFC000007F000>27 39 -3 0 34]54 dc[<FFFE001FFFFEFFFE001FFFFE
FFFE001FFFFE01C00000FF0001C00000FF0001E00001FF0000E00001FE0000E00001FE00007000
03FC0000700003FC0000780007FC00003FFFFFF800003FFFFFF800001FFFFFF000001C000FF000
001E001FF000000E001FE000000E003FE0000007003FC0000007003FC0000007807FC000000380
7F80000003C0FF80000001C0FF00000001C0FF00000000E1FE00000000E1FE00000000F3FE0000
000073FC0000000073FC000000003FF8000000003FF8000000003FF8000000001FF0000000001F
F0000000000FE0000000000FE0000000000FE00000000007C00000000007C00000000003800000
>47 41 -2 0 52]65 dc[<00003FF800000003FFFF0000000FFFFFC000003FF007E00000FF8000
F80001FE00003C0003FC00001E0007F000000E000FF0000007001FE0000007001FE0000003803F
C0000003803FC0000003807FC0000003807F80000000007F8000000000FF8000000000FF800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
80000000007F80000000007F80000003807FC0000003803FC0000003803FC0000007801FE00000
07801FE0000007800FF000000F8007F000001F8003FC00003F8001FE00007F8000FF8001FF8000
3FF007DF80000FFFFF87800003FFFE038000003FF00180>41 41 -4 0 50]67 dc[<FFFFFCFFFF
FCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFF
FC>22 41 -2 0 26]73 dc[<FFFFFFFF00FFFFFFFF00FFFFFFFF0003FC01FF0003FC007F8003FC
001F8003FC000F8003FC000F8003FC00078003FC00078003FC00038003FC00038003FC0003C003
FC0001C003FC0001C003FC0001C003FC0001C003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
000003FC000000FFFFFC0000FFFFFC0000FFFFFC0000>34 41 -3 0 41]76 dc[<FFFE00000380
FFFE00000380FFFE00000780038000000F80038000001F80038000003F80038000007F80038000
007F8003800000FF8003800001FF8003800003FF8003800007FF8003800007FB800380000FF380
0380001FE3800380003FE3800380007FC380038000FF8380038000FF0380038001FE0380038003
FC0380038007FC038003800FF8038003800FF0038003801FE0038003803FC0038003807FC00380
0380FF8003800381FF0003800381FE0003800383FC0003800387F8000380038FF8000380039FF0
000380039FE000038003BFC000038003FF8000038003FF80000380FFFF0000FFFEFFFE0000FFFE
FFFC0000FFFE>47 41 -3 0 54]78 dc[<0000FFE00000000FFFFE0000003FC07F800000FF001F
E00001FC0007F00003F80003F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003F
C000007F803FC000007F807FC000007FC07FC000007FC07F8000003FC0FF8000003FE0FF800000
3FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF
8000003FE0FF8000003FE07F8000003FC07F8000003FC07F8000003FC07FC000007FC03FC00000
7F803FC000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001
FC0007F000007F001FC000003FC07F80000007FFFC00000000FFE00000>43 41 -4 0 52]79 dc
[<FFFFF0003FF0FFFFF001FFF8FFFFF003FE1C03FC0007F80E03FC000FF80703FC001FF80703FC
001FF00703FC001FF00003FC001FF00003FC001FF00003FC001FE00003FC001FE00003FC001FE0
0003FC001FE00003FC001FE00003FC001FC00003FC003F800003FC003F800003FC007F000003FC
00FC000003FFFFF0000003FFFFFE000003FC007FC00003FC001FE00003FC0007F80003FC0007F8
0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC
0003FE0003FC0003FC0003FC0007FC0003FC0007F80003FC000FF00003FC007FE000FFFFFFFF80
00FFFFFFFE0000FFFFFFE00000>48 41 -3 0 52]82 dc[<007FFFFFE000007FFFFFE000007FFF
FFE00000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000
00003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003F
C0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000
00003FC0000000003FC0000000003FC00000E0003FC000E0E0003FC000E0E0003FC000E0E0003F
C000E0E0003FC000E0F0003FC001E0F0003FC001E070003FC001C078003FC003C078003FC003C0
7E003FC007C07F803FC03FC07FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC0>43 40 -2 0 48]84
dc[<01FC03FC0FFF0FFC3F839FFC7F00DF807E007F80FE003F80FE003F80FE003F80FE003F807F
003F803F003F803F803F800FE03F8007FC3F8000FFFF80000FFF8000003F8000003F8000003F80
07003F800F803F801FC03F001FC07E001FC07E000F81F80007FFF00001FF8000>30 27 -2 0 33
]97 dc[<001FE00000FFFC0003F01E0007E007000FC003801F8001C03F8001C07F8000007F0000
007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F0000007F00
00007F800E003F801F001F803F800FC03F8007E03F8003F01F0000FFFE00001FF800>26 27 -2
0 31]99 dc[<003FC3FF8000FFF3FF8003F03BFF8007C00FF8000F8007F8001F8003F8003F8003
F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF00
03F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8000F
C007F80007E00FF80003F03FF80000FFFBF800001FE3F800000003F800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F80000003FF80000003FF80000003FF800>33 42 -2 0 38]100 dc[<001FF00000FF
FE0003F81F0007E003800FC001C01F8000E03F8000E07F0000007F0000007F000000FF000000FF
000000FF000000FFFFFFE0FFFFFFE0FF0007E0FF0007E07F0007E07F0007C07F000FC03F800FC0
1F800F800F801F8007C01F0003F07E0001FFF800003FE000>27 27 -2 0 32]101 dc[<7FFF80
7FFF807FFF8007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC0
07F00007F00007F00007F00007F00007F00007F00007F03E07F07F03F07F03F87F01F87F00FE3E
003FFC0007F0>24 42 -2 0 21]102 dc[<007FF00003FFFE000FC01F801F0007C03C0001E07C
0001F0F80000F8F80000F8F80000F8F80000F87C0001F83E0007F01FFFFFF007FFFFE00FFFFFC0
1FFFFF801FFFFF003FFFF8003E0000003C000000380000003800000018FF80001FFFE0000FC1F8
001F80FC001F007C003F007E007F007F007F007F007F007F007F007F007F007F007F007F003F00
7E101F007C381F80FC7C0FC1FE7C03FFE7F800FF81F0>30 40 -2 13 34]103 dc[<FFFE3FFF80
FFFE3FFF80FFFE3FFF800FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FF003F8000FF003F8000FF803F8000FF803F0000FEE03F0000FE7
87E0000FE1FFC0000FE07F00000FE00000000FE00000000FE00000000FE00000000FE00000000F
E00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000FFE0000000
FFE0000000FFE0000000>33 42 -3 0 38]104 dc[<FFFEFFFEFFFE0FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFE0FFE0FFE00000
00000000000000000000000007000FC01FE03FE03FE03FE01FE00FC00700>15 43 -3 0 20]
105 dc[<FFFC3FFEFFFC3FFEFFFC3FFE0FC00FE00FC00FC00FC01FC00FC03F800FC07F000FC07F
000FC0FE000FC1FC000FE3F8000FF3F8000FFFF0000FFFE0000FEFE0000FE7C0000FE3C0000FE0
E0000FE078000FE03C000FE01E000FE00F000FE007800FE01FFC0FE01FFC0FE01FFC0FE000000F
E000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000
0FE00000FFE00000FFE00000FFE00000>31 42 -2 0 36]107 dc[<FFFEFFFEFFFE0FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFE0FFE0FFE0>15 42 -3
0 20]108 dc[<FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF80FE001FC003F800FE001FC
003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
3F800FE001FC003F800FE001FC003F800FE001FC003F800FF001FE003F800FF001FE003F800FD8
01FF003F800FCC01F9803F000FC603F8C07F00FFC383F0707E00FFC1FFE03FFC00FFC07F800FF0
00>53 27 -3 0 58]109 dc[<FFFE3FFF80FFFE3FFF80FFFE3FFF800FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FF003F8000FF003F8
000FD803F8000FD803F0000FCE03F000FFC787E000FFC1FFC000FFC07F0000>33 27 -3 0 38]
110 dc[<003FE00001FFFC0007F07F000FC01F801F800FC03F800FE03F800FE07F0007F07F0007
F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F00
07F07F0007F03F0007E03F800FE01F800FC00FC01F8003F07E0001FFFC00003FE000>29 27 -2
0 34]111 dc[<FFFF00FFFF00FFFF000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FF01C0FF03E0FF07F0FD87F0FD8
7FFFCE3EFFC7FCFFC1F0>24 27 -2 0 28]114 dc[<C1FF00F7FFC0FF01E0FC0070F80038F000
38F0003CE0003C60007C0000FC0003FC00FFF807FFF81FFFF03FFFE07FFF807FFE00FFE000FC00
00F80070F00070F000707000703800F01E03F00FFFF003FE30>22 27 -2 0 27]115 dc[<001F
8000FFC001F86003F87003F03807F03807F03807F03807F03807F03807F03807F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000FFFFF0FFFFF01FFF
F007F00003F00003F00001F00000F00000F00000F000007000007000007000007000>21 38 -1
0 27]116 dc[<003FC3FF8001FFF3FF8003F03BFF8007E00FF80007E007F8000FE007F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F800FFE03FF800FFE03FF800FFE03FF800>33 27 -3 0 38]117 dc[<0001
C000000003E000000003E000000007F000000007F00000000FF80000000FF80000000FF8000000
1FDC0000001FDC0000003FDE0000003F8E0000007F8F0000007F070000007F07000000FE038000
00FE03800001FC01C00001FC01C00003FC01E00003F800E00007F800F00007F000700007F00070
00FFFE03FF80FFFE03FF80FFFE03FF80>33 27 -1 0 36]118 dc[<00078003C00000078003C0
00000FC007E000000FC007E000000FC007E000001FE00FF000001FE00FF000003FF01FF800003F
F01FB800003FF01FB800007F783F3C00007F383F1C0000FF383F1E0000FE1C7E0E0000FE1C7E0E
0001FE1EFC0F0001FC0EFC070001FC0EFC070003F807F8038003F807F8038007F807F803C007F0
03F001C007F003F001C00FE007E000E0FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE>47 27 -1
0 50]119 dc dfe /fc df[<387CFEFEFE7C38>7 7 -4 0 16]46 dc[<7FFFE07FFFE001F80001
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800FFF800FFF80001
F800007800001800>19 32 -4 0 28]49 dc[<FFFFF0FFFFF07FFFF03FFFF01FFFF00FFFF00E00
3807001803801801C01800E018007000003800003E00001F00000F800007C00007E00003F00003
F00003F83803F87C01F8FE01F8FE03F8FE03F8FE03F07C07F07007E03C1FC00FFF0003FC00>21
32 -3 0 28]50 dc[<01FE000FFFC01E07F07801F87E01FCFF00FCFF00FEFF00FEFF00FE7E00FE
3C00FE0000FC0000FC0001F80001F00007C001FF0001FE00001F800007C00003E00003F01F03F0
1F03F83F81F83F81F83F81F83F03F01E03F00F07E007FFC000FE00>23 32 -2 0 28]51 dc[<00
FFFE00FFFE0007E00007E00007E00007E00007E00007E00007E0FFFFFEFFFFFEE007E07007E038
07E01807E00C07E00E07E00707E00307E00187E001C7E000E7E00077E00037E0001FE0001FE000
0FE00007E00003E00003E00001E00000E0>23 32 -2 0 28]52 dc[<03F8000FFF001C1F803007
C07007E0FC03F0FC03F0FE03F8FE03F87C03F83803F80003F80003F80003F00003F01803E01807
E01E0FC01FFF0019FC001800001800001800001800001BC0001FF8001FFE001FFF001FFF801FFF
C01E01E0100020>21 32 -3 0 28]53 dc[<FFFFE000FFFFE00007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0180007F0180007F0180007F0180007F03800
07F0780007FFF80007FFF80007F0780007F0380007F0180007F0180007F0180C07F0180C07F000
0C07F0000C07F0001C07F0001C07F0001807F0003807F0007807F001F8FFFFFFF8FFFFFFF8>30
34 -2 0 35]70 dc[<FFF00600FFFFFFF00F00FFFF06000F0007E006001F8007E006001F8007E0
06001F8007E006003FC007E006003FC007E006007E6007E006007E6007E00600FC3007E00600FC
3007E00601F81807E00601F81807E00601F81807E00603F00C07E00603F00C07E00607E00607E0
0607E00607E0060FC00307E0060FC00307E0060FC00307E0061F800187E0061F800187E0063F00
00C7E0063F0000C7E0067E000067E0067E000067E006FC000037E006FC000037E006FC000037E0
07F800001FE0FFF800001FFFFFF000000FFF>48 34 -2 0 53]77 dc[<FFF00000C0FFF00001C0
06000003C006000003C006000007C00600000FC00600001FC00600003FC00600007FC00600007F
C0060000FFC0060001FEC0060003FCC0060007F8C0060007F0C006000FF0C006001FE0C006003F
C0C006007F80C00600FF00C00600FE00C00601FE00C00603FC00C00607F800C0060FF000C0060F
E000C0061FE000C0063FC000C0067F8000C006FF0000C007FE0000C007FC0000C0FFFC001FFEFF
F8001FFE>39 34 -2 0 44]78 dc[<80FF80C7FFE0FF00F8FC003CF0003CE0001EE0001EC0001F
C0001FC0001F00003F00003F00007F0003FF003FFE03FFFE0FFFFC1FFFF83FFFF07FFFC07FFF00
FFE000FF0000FC0000FC000CF8000CF8000C78001C78001C7C003C3C007C1F03FC07FF8C01FC04
>24 34 -3 0 31]83 dc[<03FFFFF80003FFFFF8000003F800000003F800000003F800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F80000C003F800C0C003F800C0C003F800C0C003F800C0E003F801C0E003F801C06003F80180
7003F803807803F807807E03F80F807FFFFFFF807FFFFFFF80>34 34 -2 0 39]84 dc[<000038
0000000038000000007C000000007C00000000FE00000000FE00000000FE00000001FF00000001
FF00000003FD80000003F980000007F9C0000007F0C0000007F0C000000FF06000000FE0600000
1FE03000001FC03000003FC03800003F801800003F801800007F800C00007F000C0000FF000600
00FE00060001FE00070001FC00030001FC00030003F800018003F800018007F80000C007F00000
C0FFFF800FFEFFFF800FFE>39 34 -1 0 42]86 dc[<07E03F1FF87F7E0CF87E02F0FC01F0FC01
F0FC01F0FC01F07E01F03F01F01FC1F003FDF0003FF00001F00001F01E01F03F01F03F01E03F03
E03F07C01FFF8007FC00>24 22 -2 0 27]97 dc[<01FC3FC007FF3FC00F83BE001E00FE003E00
7E007C003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC
003E007C003E007E003E003E003E001F007E000F81FE0007FFBE0001FC3E0000003E0000003E00
00003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E000001FE
000001FE00>26 35 -2 0 31]100 dc[<00FF0003FFC00FC0701F00303E00187E00007C00007C
0000FC0000FC0000FC0000FFFFF8FFFFF8FC00F8FC00F87C00F87C00F03E01F01E01E00F87C007
FF8000FE00>21 22 -2 0 26]101 dc[<01FF000FFFE03F01F87C007C78003CF0001EF0001EF0
001EF0001E70003E3800FC1FFFFC0FFFF81FFFF03FFF8038000030000030000013FC001FFF001F
0F803E07C03C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07CF1F0F8F0FFF7F03FC1E>
24 33 -2 11 28]103 dc[<FFE1FFC0FFE1FFC01F003E001F003E001F003E001F003E001F003E
001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F80
3E001F803E001F403C001F307C001F1FF8001F07E0001F0000001F0000001F0000001F0000001F
0000001F0000001F0000001F0000001F0000001F0000001F000000FF000000FF000000>26 35
-2 0 31]104 dc[<FFE0FFE01F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F00FF00FF0000000000000000000000000000001C003F007F007F007F003F00
1C00>11 36 -2 0 16]105 dc[<FFE0FFC0FFE0FFC01F003C001F007C001F00F8001F01F0001F
01E0001F03E0001F07C0001F0F80001FCF00001FFF00001F7E00001F1C00001F0E00001F070000
1F0380001F01C0001F0060001F0038001F00FF801F00FF801F0000001F0000001F0000001F0000
001F0000001F0000001F0000001F0000001F0000001F0000001F000000FF000000FF000000>26
35 -2 0 30]107 dc[<FFE0FFE01F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FF00
FF00>11 35 -2 0 16]108 dc[<FFE0FFE0FFE0FFE0FFE0FFE01F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F801F801F001F
801F801F001F403E403E001F303E303E00FF1FFC1FFC00FF07F007F000>43 22 -2 0 48]109
dc[<FFE1FFC0FFE1FFC01F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E001F003E001F003E001F003E001F003E001F003E001F003E001F803E001F803E001F403C00
1F307C00FF1FF800FF07E000>26 22 -2 0 31]110 dc[<00FE0007FFC00F83E01F01F03E00F8
7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C7C007C3E00F8
1E00F00F83E007FFC000FE00>23 22 -2 0 28]111 dc[<FFE00000FFE000001F0000001F0000
001F0000001F0000001F0000001F0000001F0000001F0000001F0FC0001F3FF8001FE0FC001FC0
3E001F803F001F001F801F001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F
000FC01F000FC01F001F801F001F801F001F001F803E001FF07C00FF3FF800FF0FE000>26 32
-2 10 31]112 dc[<FFF000FFF0001F00001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F00001F00001F00001F83C01E87E01E87E01EC7E01E67E0FE3FC0FE1F00>19 22
-2 0 23]114 dc[<C7F000EFFC00FC0E00F00700E00380E00380C00380C00780000F8001FF000F
FF003FFE007FF8007FE000FC0000F00300E00300E00300600700781F003FFF000FF300>17 22
-2 0 22]115 dc[<00F80003FE0007C3000F83000F81800F81800F81800F81800F81800F80000F
80000F80000F80000F80000F80000F80000F80000F80000F80000F8000FFFF00FFFF003F80000F
8000078000078000038000038000018000018000018000018000>17 32 -1 0 22]116 dc[<01
FC3FC007FF3FC00F81BE001F00FE001F007E001F003E001F003E001F003E001F003E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
00FF01FE00FF01FE00>26 22 -2 0 31]117 dc[<001800C000003800E000003C01E000007C01
F000007E03F000007E03F00000FE03D80000FB07D80001FB079C0001F38F8C0001F18F0C0003E1
8F060003E0DF060007E0DE070007C0DE030007C07E03000F807C01800F807C01800F807801801F
007800C0FFE7FF07F8FFE7FF07F8>37 22 -1 0 40]119 dc[<1F0000007F80000069C00000FC
600000FC300000FC3800007818000000180000000C0000000C0000000E0000000E0000001F0000
001F0000003F8000003F8000007FC000007CC000007CC00000F8600000F8600001F0300001F030
0003E0180003E0180007E01C0007C00C000FC00E000F8006000F800600FFE01FE0FFE01FE0>27
32 -1 10 30]121 dc dfe /fd df[<4020101008080404040474FCFCF870>6 15 -4 10 14]
44 dc[<70F8F8F870>5 5 -4 0 14]46 dc[<01F000071C000C06001C07003803803803807803
C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E07001C07001C07001C07001C03803803803801803000C0600071C
0001F000>19 34 -2 1 24]48 dc[<FFFFC07FFFC03FFFC0300040180060080020040020020020
01000001800000C000006000003000001800001C00000E000007000007800003C00003C00003E0
2003E0F801E0F801E0F801E0F003E08003E04003C04003C02007801007000C1C0003F000>19 33
-2 0 24]50 dc[<01FFF0001F00000E00000E00000E00000E00000E00000E00000E00FFFFF880
0E00400E00200E00200E00100E00100E00080E00040E00040E00020E00020E00010E00008E0000
8E00004E00004E00002E00001E00001E00000E00000E00000600000200>21 33 -1 0 24]52 dc
[<01800003C00003C00003C00003C00003C00003C00003C00003C00001C00001C00001C00001C0
0000C00000C00000E0000060000060000060000020000030000010000008000008000004008002
00800200800100C001004000807FFFC07FFFC07FFFE0600000400000>19 35 -3 1 24]55 dc[<
0FC000103000201800700C007806007807003003000003800003800001C00001C00001C003E1E0
0619E00C05E01805E03803E07003E07001E0F001E0F001E0F001E0F001E0F001E0F001C0F001C0
F001C07003807003803803801807000C0600060C0001F000>19 34 -2 1 24]57 dc[<FF800FFF
3E0001F80C0000F00C0000F0040001E0040001E0040003E0020003C0020003C0030007C0010007
800100078000FFFF0000800F0000800F0000401E0000401E0000401E0000203C0000203C000020
3C0000107800001078000010F8000008F0000008F000000DF0000005E0000005E0000003C00000
03C0000003C000000180000001800000018000>32 35 -2 0 37]65 dc[<FFFFFC000F800F0007
8007C0078003E0078001F0078001F0078000F8078000F8078000F8078000F8078000F8078000F8
078000F0078001F0078001E0078003C00780078007FFFE0007803E0007800F80078007C0078003
E0078001E0078001F0078001F0078001F0078001F0078001F0078001E0078003E0078003C00780
07800F800E00FFFFF800>29 34 -2 0 35]66 dc[<0007E00000381C0000E0020001C001000380
0080070000400E0000401E0000201C0000203C0000103C0000107C0000107800001078000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007800001078000010
7C0000103C0000303C0000301C0000301E0000700E000070070000F0038000F001C0017000E006
30003818300007E010>28 36 -3 1 35]67 dc[<FFFFF8000F801E0007800700078003C0078001
E0078000E0078000F007800078078000780780007C0780003C0780003C0780003E0780003E0780
003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C0780003C07
80007C0780007807800078078000F0078000E0078001C0078003C0078007000F801E00FFFFF000
>31 34 -2 0 37]68 dc[<FFFFFFE00F8003E0078000E007800070078000300780003007800010
0780001007800010078000080780000807802008078020000780200007802000078060000780E0
0007FFE0000780E000078060000780200007802000078020000780202007800020078000200780
0020078000600780004007800040078000C0078001C00F8007C0FFFFFFC0>29 34 -2 0 33]69
dc[<07C000187000203800401C00F01E00F80E00F80F00F80F00700F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F00000F00000F00000F00000F00000F00000F00001F0003FFF0>20 35 -2 1 25]74 dc
[<FFFC00000FC00000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007FFF00007803C0007800F0007
800780078007C0078003C0078003E0078003E0078003E0078003E0078003E0078003E0078003C0
078007C00780078007800F000F803C00FFFFF000>27 34 -2 0 33]80 dc[<81FC00C60700C801
80F000C0E000C0C00060C000608000708000708000708000700000700000F00000F00001E00007
E0003FC003FF800FFF001FFE003FF0007F0000780000F00000F00000E00020E00020E00020E000
60E000606000607000E03001E01802600C0C6003F020>20 36 -3 1 27]83 dc[<03FFFF00000F
C00000078000000780000007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
000780000007800080078004800780048007800480078004C007800C4007800840078008400780
0860078018780780787FFFFFF8>30 34 -2 0 35]84 dc[<0003F000001C080000300600006001
0000E0008001C0008003C0004003C0004003800040078000200780002007800020078000200780
002007800020078000200780002007800020078000200780002007800020078000200780002007
800020078000200780002007800020078000200780002007800020078000200780002007800070
0FC000F8FFFC07FF>32 35 -2 1 37]85 dc[<00020000800000030001800000070001C0000007
0001C00000070001C000000F8003E000000F8003E000000F8003E000001E40079000001E400790
00001E40079000003C200F0800003C200F0800003C200F0800007C101E04000078101E04000078
101E040000F8183E060000F0083C020000F0083C020000F0083C020001E00478010001E0047801
0001E00478010003C002F0008003C002F0008003C002F00080078001E00040078001E000400780
01E000400F0003C000200F0003C000200F0003C000701F8007E000F8FFF03FFC03FE>47 35 -1
1 50]87 dc[<0FC1E03C2390781708F00F08F00708F00708F007087007007807003C07001E0700
07C70000FF000007000007000007001807003C0E003C0C001838000FE000>21 21 -2 0 24]97
dc[<01F8000706000C01001C0080380040780040700000F00000F00000F00000F00000F00000F0
0000F000007000007800003803001C07800C078007030001FE00>18 21 -2 0 22]99 dc[<01F0
FE070CF00C02E01801E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000
E07000E07800E03800E01C01E00C02E00704E001F8E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00001E0000FE00000E0>23 35 -2 0 27]100 dc[<00FC
000703000E00801C0040380020780020700000F00000F00000F00000F00000F00000FFFFE0F000
E07000E07801E03801C01C01C00C038007070001FC00>19 21 -1 0 22]101 dc[<7FF8078007
0007000700070007000700070007000700070007000700070007000700070007000700FFF80700
07000700070007000700070007000700030F038F018F00C6003C>16 35 0 0 15]102 dc[<FFE7
FF0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700F00700F00700E80E00E60C00E1F800E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00001E0000FE00000E0000>24 35 -1 0 27]104 dc[<FFC0
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E001E00FE000E
00000000000000000000000000000000001C001E003E001E001C00>10 34 -1 0 14]105 dc[<
FFE3FE0E00F80E00F00E01E00E01C00E03C00E07800E07000E0E000E1E000F1C000EF8000E3800
0E10000E08000E04000E02000E01800E01C00E01F00E03FC0E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00001E0000FE00000E0000>23 35 -1 0 26]107 dc[<
FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E001E00FE000E00>11 35 -1 0 14]
108 dc[<FFE3FF8FFE0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0
0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00F003C00E00F003C00E01E807201C0FE60E183800E1FC07F00>39 21 -1 0 42]
109 dc[<FFE7FF0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700F00700F00701E80E0FE60C00E1F80>24 21 -1 0 27]110 dc[
<01FC000707000E03801C01C03800E07800F0700070F00078F00078F00078F00078F00078F000
78F000787000707000703800E01800C00C018007070001FC00>21 21 -1 0 24]111 dc[<FFE0
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3F000E41C00E80E00F00
700E00380E003C0E003C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00
380F00700E8060FE61C00E1F00>23 31 -1 10 27]112 dc[<FFF00F000E000E000E000E000E00
0E000E000E000E000E000E000E000E000F000F060F0F1E8FFE460E3C>16 21 -1 0 19]114 dc[
<8FC0D030E018C008C00C800C800C801C003C01F80FF03FE07F80F000E008C008C008C0186018
30780F88>14 21 -2 0 19]115 dc[<01F0030807080E040E040E040E040E040E040E000E000E
000E000E000E000E000E000E000E000E00FFF83E001E000E000600060006000200020002000200
>14 31 -1 0 19]116 dc[<00FC7F0382780601700E00F00E00F00E00700E00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00701E00F0FE07F00E0070>24 21
-1 0 27]117 dc[<00100000380000380000380000740000740000E20000E20000E20001C10001
C1000380800380800380800700400700400E00200E00200E00301E0078FFC1FE>23 21 -1 0 26
]118 dc[<3C0000430000F18000F08000F0400000400000200000200000200000100000100000
380000380000380000740000740000E20000E20000E20001C10001C10003808003808003808007
00400700400E00200E00200E00301E0078FFC1FE>23 31 -1 10 26]121 dc dfe /fe df[<80
4040201010080838783818>5 12 -3 8 13]44 dc[<FFC0FFC0FFC0>10 3 -3 -7 15]45 dc[<
60F07830>5 4 -4 0 13]46 dc[<1E000071800060C000E06000C06000E03000E03800E03800E0
1C00E01C00E01C00700E00700E00700E00700E003807003807003807003807001C03001C03800C
03800E038006038006030003030001830000C600003C00>17 29 -5 1 21]48 dc[<FFF0078003
8003800380038001C001C001C001C000E000E000E000E000700070007000700038003800380038
039C007C001C000C00060002>15 28 -4 0 21]49 dc[<80E00083F800C7F8007E0C0040060020
020010020010010008000006000001000000C000003000001800000C000E060011070010838010
83800841C00841C00841C00441C00441C00201C002018001018000C300003C00>18 29 -4 1 21
]50 dc[<1F000021C000406000803000803800801C00E01C00700E00000E00000E00000E00000E
00000C00000C0000380001F800000E000007000703800883800841C00841C00841C00440C00400
C00200C001018000C180003E00>18 29 -4 1 21]51 dc[<00600000E000007000007000007000
007000003800003800803F0040F8003F1C00181C000C1C00061C00020E00010E00018E0000C600
004000006000003000003000001800001800001C00000C00000E00000600000700000700000300
0003800003800003800001C0000180>18 36 -2 8 21]52 dc[<7C0000860000818000E0C000E0
C000006000003000003800001800001C00079C000C6C00181E00181E00380E00380F0038070038
07003807001C03001C03001C03800C03800E030006030003030001830000C600003C00>17 29
-5 1 21]57 dc[<60F0783000000000000000000000060F0F06>8 18 -4 0 13]58 dc[<FF00FF
C01C001E000C000E0004000E0002001C0002001C0001001C0001801C0000801C0000401C00007F
FC0000201C0000201C0000101C0000181C0000081C0000041C0000041C0000023C000002380000
0138000001B8000000B800000078000000780000003800000038000000180000001800>26 29
-2 0 31]65 dc[<FFFF80000E01E0000700780007003C0007001C0007001E0003800F0003800F
0003800F0003800F0001C00F0001C00F0001C00E0001C01C0000FFF80000E03C0000E00E0000E0
070000700780007003C0007003C0007001C0003801C0003801C0003801C0003803C0003C078001
FFFE00>26 28 -3 0 29]66 dc[<01F80000070600000C01800018004000380020007000100070
000800F0000800F0000400F0000400F0000400F0000000F0000000F0000000F000000078000000
78000000780000003C0000003C0000801C0000801E0000800E000080070000C0038001C001C001
C000E003C0003002E0001E0C600003F020>27 30 -6 1 30]67 dc[<FFFF00000E01C000070070
000700380007001C0007000E00038007000380078003800380038003C001C001C001C001E001C0
01E001C001E000E000F000E000F000E000F000E000F0007000F00070007000700070007000F000
3800E0003800E0003801C0003801C0003C078001FFFE00>28 28 -3 0 31]68 dc[<FFFFF0000E
0078000700180007000C0007000400070004000380020003800200038001000381010001C08000
01C0800001C0800001C0800000FFC00000E0C00000E0400000E040000070200000702040007000
400070004000380040003800400038004000380060003C00E001FFFFE0>27 28 -3 0 28]69 dc
[<FFE0000F000007000007000007000007000003800003800003800003800001C00001C00001C0
0001C00000E00000E00000E00000E0000070000070000070000070000038000038000038000038
00003C0001FFC0>18 28 -2 0 16]73 dc[<3C000047000083800081C000C0C000E0E00060E000
007000007000007000007000003800003800003800003800001C00001C00001C00001C00000E00
000E00000E00000E00000700000700000700000700000780007FF0>20 29 -5 1 22]74 dc[<FF
FFC00E03C00700E007006007003007001003801003800803800803800801C00001C00001C00001
C00000E00000E00000E00000E00000700000700000700000700000380000380000380000380000
3C0001FFE0>21 28 -3 0 26]76 dc[<FF861FFC001C0601E0000C0700E000040700E000040780
E000040740E0000207407000020720700002072070000207107000010710380001070838000107
0438000107043800008E021C00008E021C00008E011C00008E011C00004E008E00004E004E0000
4E004E00004E002E00002E002700002E001700002E001700002E000F00003E00078001FE0007F8
>37 28 -3 0 37]77 dc[<FF8010001C0010000C00180004003800040038000400380002007400
02007400020074000200E4000100E2000100E2000101C2000101C2000081C10000818100008381
000083810000438080004700800047008000470080002E0040002E0040002E0040003C0060001C
007001FC03FE>31 28 -3 0 31]78 dc[<03F800000E0E00001C0380003801C0007800E0007000
700070003800F0003C00F0001E00F0000E00F0000F00F0000F00F0000780F0000780F000078078
0003C0780003C0780003C03C0003C03C0003C01C0003C01E0003C00E0003C00700038003800380
01C0038000E0070000700E00001C1C000007F000>26 30 -6 1 32]79 dc[<FFE000000F000000
070000000700000007000000070000000380000003800000038000000380000001C0000001C000
0001C0000001FFE00000E0380000E00E0000E0070000E0078000700380007003C0007003C00070
03C0003801C0003801C0003801C000380380003C070001FFFC00>26 28 -3 0 28]80 dc[<0000
1E00FFE079000F0078800700F0800700F0400700F0400700F00003807000038070000380700003
80700001C0700001C0700001C0600001C0C00000FFC00000E0700000E01C0000E00E0000700F00
00700780007007800070078000380380003803800038038000380700003C0E0001FFF800>26 29
-3 1 30]82 dc[<83E000CC1800F004006002006003006001806001802000C02000C00000C000
00C00001C00001C00007C0007F8001FF0003FC0003E00007000007000006000006001006001003
001803001801001800801800403C00304C000F84>22 30 -3 1 23]83 dc[<7FFE000003C00000
01C0000001C0000001C0000001C0000000E0000000E0000000E0000000E0000000700000007000
00007000000070000000380000003800000038000000380000001C0000801C0080801C0080401C
0080400E0080600E0080200E0080300E00C01C0701C01FFFFFC0>26 28 -7 0 30]84 dc[<0F80
0000104000003030000060080000E0040000E0040000E0020000E0020000E0010000E0010000E0
01000070008000700080007000800070008000380040003800400038004000380040001C002000
1C0020001C0020001C0020000E0010000E0010000E0010000E0018000F001C007FF0FF80>25 29
-9 1 31]85 dc[<1000600000180060000018007000001C007000001C007800001E007800001E
007400001D007400001D807200001C807200001C407100001C407180001C207080001C20704000
1C107040001C107020001C087020001C087010001C047010001C04700800380270080038027004
00380170040038017002003800F002003800F0010038007001803C007001C0FF83FF0FF0>36 29
-9 1 41]87 dc[<FF80FFC01E001E0006001E0002001C0001001C0000803C0000403800006038
0000207000001070000008F0000004E0000002E0000001E0000001C0000001C0000003C0000003
A000000790000007080000070400000F0200000E0100000E0180001E0080001C0060001E00F001
FF81FE>31 28 -2 0 31]88 dc[<3C38626461E4C0E2C0E2E0E2E070E070E070E0707038703830
383838181C0C3C063C03CC>15 18 -5 0 21]97 dc[<3C0063006180C1C0C0C0E0E0E060E070E0
70E0707038703870387038383038303E6039C01C001C001C001C000E000E000E000E0007000700
3F00>13 29 -5 0 19]98 dc[<1F0030C06020E010E008E000E000E000E000E000700070003000
3838181C0C08070801F0>14 18 -5 0 19]99 dc[<3C380062640061E400C0E200C0E200E0E200
E07000E07000E07000E07000703800703800303800383800181C000C3C00063C0003DC00000E00
000E00000E00000E00000700000700000700000700000380000380001F80>17 29 -5 0 21]
100 dc[<1F0030C060206010E008E000E000E000E000E0007F8070607010381018080C10071001
E0>13 18 -5 0 19]101 dc[<780000CC0000E60000C600000700000300000300000380000380
0003800001C00001C00001C00001C00001C00000E00000E00000E00000E00000E0000070000070
0000700000700000700003FF80003800003800003800003800003800001C00001C00001C60000C
700006700003C0>20 37 1 8 13]102 dc[<7E00C300E1C0C0C000E000E0007000700F7018F018
78303830383838381C381C381C381C1C0E1C0E0C0E0E0E0607030F018F00F3>16 26 -3 8 19]
103 dc[<601C00E03200707100707080703880703880383800381C00381C00381C001C0E001C0E
001C0E001C0E000E0E000F0E000E8C000E78000700000700000700000700000380000380000380
0003800001C00001C0000FC000>17 29 -3 0 21]104 dc[<3C00720072007100710071003800
38001C001C001C000E008E008E004700470026001C000000000000000000000000000000010003
800180>9 28 -4 0 13]105 dc[<38006800E400E400E400E40070007000700070003800380038
0038001C001C001C001C000E000E000E000E000700070007000700038003801F80>9 29 -4 0
11]108 dc[<300C01C0701C0320380E0710380E0708380E0388380E03881C0703801C0701C01C
0701C01C0701C00E0380E00E0380E08E0380E08E0380E04703C0E04683A0E0266318C03C1E0780
>29 18 -4 0 34]109 dc[<300E00701900383880383840381C40381C401C1C001C0E001C0E00
1C0E000E07000E07008E07008E07004707004687002646003C3C00>18 18 -4 0 23]110 dc[<
1E00318060C0E060E030E038E018E01CE01CE01C700E700E300E380C180C0C0C071801E0>15 18
-5 0 21]111 dc[<FF80003C00001C00001C00001C00001C00000E00000E00000E70000E8C0007
06000707000703000703800381800381C00381C00381C001C0E001C0E011C0E011C0E008E0C008
E0C004D980078700>19 26 -1 8 21]112 dc[<3000700038003800380038001C001C001C001C
000E000E008E008E064707468726C23C3C>16 18 -4 0 18]114 dc[<1F0060C08060C030E030
60300038007807F00FF01FC01F001C0018180C1C0C08060801F0>14 18 -3 0 17]115 dc[<0E
00190038803840384038401C001C001C001C000E000E000E000E00070007000700FFE003800380
0380038001C001C001C000C0>11 26 -3 0 14]116 dc[<078E001C5900183900183880383880
3838801C1C001C1C001C1C001C1C000E0E000E0E00870E00870E004707004707002707001E0300
>17 18 -4 0 22]117 dc[<07800C4018201810380818081C081C041C041C040E020E02870287
024706470E270E1E06>15 18 -4 0 19]118 dc[<07C3C00C26301C1C10181C08181C04180C04
1C0E041C0E021C0E021C0E020E07010E07018707018707014703834703872703871E0183>24 18
-4 0 28]119 dc[<70F0008B0800CB0400E7040067020007020003800003800003800003800001
C00001C00041C00041C30020E38010E380199100070E00>17 18 -3 0 19]120 dc[<3C004700
8180E1C0E0C000E00070007007F01C7018381838383838381C1C1C1C1C1C1C1C0E0E0E0E870E87
0E4707470727071E03>16 26 -4 8 20]121 dc[<81C043E067F0383010080808040002000100
0080004000200010100808380FEC07C20382>15 18 -3 0 17]122 dc dfe /ff df[<03C00FF0
1FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C0>16 16 -2 -2 21]15 dc
dfe /fg df[<7F87FC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00
0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E03C1800703C3C00303E3C001C1B1
80007E1F00>26 29 0 0 24]11 dc[<7F87F80E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E00000E00000E00
000E00000E00000E01800E03C00703C003018001C180007E00>21 29 0 0 23]12 dc[<7FCFF8
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00703C00303C0
01C1C0007FC0>21 29 0 0 23]13 dc[<7FC7FCFF800E00E01C000E00E01C000E00E01C000E00
E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C00FFFFFFFC000E00E000000E00E00000
0E00E000000E00E000000E00E000000E00E018000E01E03C000701F03C000380F0180001C09C18
00003F07E000>33 29 0 0 35]14 dc[<7FC7FCFF800E00E01C000E00E01C000E00E01C000E00
E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C00FFFFFFFC000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E01E01C000701F03C000381F03C0001C0DC1C
00003F07FC00>33 29 0 0 35]15 dc[<808040402020101010100808080808086868F8F8F0F0
6060>13 12 -1 -17 21]34 dc[<06030000060300000603000003018000030180000301800003
0180000180C0000180C0000180C0000180C00000C060007FFFFFF8FFFFFFFC0060300000603000
006030000060300000301800003018000030180000301800FFFFFFFC7FFFFFF800180C00000C06
00000C0600000C0600000C06000006030000060300000603000006030000060300000301800003
018000030180>30 37 -2 8 35]35 dc[<07C03E001830E1803009C04070078040E0070020E00F
0020E01C8000E03C4000E0384000607020006070200030E0100010E0100009C0080005C0040003
8004000380060003800F0003C03FE0074000000720000007100000071000000708000007080000
070800000708000003080000030800000190000000E00000>27 31 -2 1 32]38 dc[<80402010
1008080868F8F060>5 12 -4 -17 12]39 dc[<004000800100020006000C000C001800180030
0030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E00060006000
6000700030003000180018000C000C0006000200010000800040>10 42 -3 11 16]40 dc[<80
0040002000100018000C000C000600060003000300038001800180018001C001C001C001C001C0
01C001C001C001C001C001C001C0018001800180038003000300060006000C000C001800100020
0040008000>10 42 -2 11 16]41 dc[<00060000000600000006000000060000000600000006
000000060000000600000006000000060000000600000006000000060000FFFFFFE0FFFFFFE000
060000000600000006000000060000000600000006000000060000000600000006000000060000
000600000006000000060000>27 28 -2 4 32]43 dc[<804020201010101070F0F060>4 12 -4
8 12]44 dc[<FFE0FFE0>11 2 0 -8 14]45 dc[<60F0F060>4 4 -4 0 12]46 dc[<C000C000
6000600060003000300030001800180018000C000C000C00060006000300030003000180018001
8000C000C000C000600060003000300030001800180018000C000C000C00060006000600030001
>16 41 -2 10 21]47 dc[<07E00C301818300C300C700E60066006E007E007E007E007E007E0
07E007E007E007E007E007E007E00760066006700E300C300C18180C3003C0>16 29 -2 1 21]
48 dc[<FFF80F8007000700070007000700070007000700070007000700070007000700070007
00070007000700070007000700C7003F0007000300>13 28 -4 0 21]49 dc[<FFFE7FFE3FFE10
0218010C0106010300018000C0006000700038001C001C000E000E000F7007F807F807F80FF00F
400E400C201C183007C0>16 28 -2 0 21]50 dc[<07E01830201C401CF00EF80FF80FF80F700F
000F000F000E001C001C003007E0006000300018001C001C381E781E780E781E201C201C183007
E0>16 29 -2 1 21]51 dc[<01FFC0001C00001C00001C00001C00001C00001C00001C00FFFFC0
C01C00401C00201C00301C00101C00081C000C1C00041C00021C00031C00011C00009C0000DC00
005C00003C00003C00001C00000C00000C00>18 28 -1 0 21]52 dc[<07C018702038401C401E
800EF00FF00FF00F600F000F000F000F000E200E301C2818243023E02000200020002000200020
003FC03FF03FF8300C>16 29 -2 1 21]53 dc[<03E00C301818300C300E700660076007E007E0
07E007E007E007E006F00EF00CE818E430E3E0600070007000300C301E181E0C0E0604030C00F0
>16 29 -2 1 21]54 dc[<03000007800007800007800007800007800007800003800003800003
800003800001800001800001C00000C00000C00000400000600000200000100000100080080080
04008004004002007FFF007FFF007FFF80400000>17 29 -2 1 21]55 dc[<07E01C10300C6004
6002C003C003C003C003C007600F601E307E18FC07F807F01FE03FB03E08780C70066006600660
062006200C10080C3003E0>16 29 -2 1 21]56 dc[<0F8030C0203070107818780C300C000E00
06000607C70C271817300F700F6007E007E007E007E007E007E006E006600E700C300C18180C30
03C0>16 29 -2 1 21]57 dc[<60F0F0600000000000000000000060F0F060>4 18 -4 0 12]
58 dc[<804020201010101070F0F0600000000000000000000060F0F060>4 26 -4 8 12]59 dc
[<0300078007800300000000000000000000000100010001000100010001000180008000C00060
0030001C000CF00EF00EF00EE00E401C30380FE0>15 29 -2 0 20]63 dc[<FF80FFF01E001F00
0C001F0004001E0004001E0006003E0002003C0002003C0003007C0001FFF800010078000180F8
000080F0000080F0000041E0000041E0000041E0000023C0000023C0000023C000001780000017
800000178000000F0000000F0000000F0000000600000006000000060000>28 29 -1 0 31]65
dc[<FFFFE00F00780F003C0F001E0F001E0F000F0F000F0F000F0F000F0F000F0F000E0F001E0F
003C0F00780FFFE00F01F00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F
00380F00F0FFFFC0>24 28 -2 0 29]66 dc[<001FC00000E0300001800800070004000E000200
1C0001001C00010038000080780000807800008070000080F0000000F0000000F0000000F00000
00F0000000F0000000F0000000F0000000700000807800008078000080380001801C0001801C00
03800E000380070007800180198000E06180001F8080>25 30 -2 1 30]67 dc[<FFFFC0000F00
70000F001C000F000E000F0007000F0007800F0003800F0003C00F0001C00F0001C00F0001E00F
0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C0
0F0003800F0007000F0007000F000E000F003C000F00F000FFFFC000>27 28 -2 0 32]68 dc[<
FFFFFC0F003C0F000C0F00060F00060F00020F00020F00020F00010F02010F02000F02000F0200
0F06000FFE000F06000F02000F02000F02000F02020F00020F00020F00060F00040F00040F000C
0F003CFFFFFC>24 28 -2 0 28]69 dc[<FFF8000F80000F00000F00000F00000F00000F00000F
00000F00000F02000F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02040F
00040F00040F000C0F00080F00080F00180F0078FFFFF8>22 28 -2 0 27]70 dc[<001F800000
E060800180118007000B800E0007801C0007801C00078038000780780007807800078070000780
F0000F80F000FFF0F0000000F0000000F0000000F0000000F0000000F000000070000080780000
8078000080380001801C0001801C0003800E000380070007800180198000E06180001F8080>28
30 -2 1 33]71 dc[<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
FFF3FFC0>26 28 -2 0 31]72 dc[<FFF00F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0>12 28 -1 0 15
]73 dc[<1F0021C040E0F0F0F878F878F878707800780078007800780078007800780078007800
7800780078007800780078007800780078007800F81FFF>16 29 -1 1 21]74 dc[<FFF07FF00F
001F800F001F000F001E000F003C000F003C000F0078000F00F8000F00F0000F01E0000F01E000
0F83C0000F4780000F2780000F2F00000F1F00000F0E00000F0400000F0200000F0100000F0080
000F0040000F0020000F0010000F0008000F000C000F000F00FFF03FE0>28 28 -2 0 32]75 dc
[<FFFFF00F01F00F00700F00300F00100F00180F00180F00080F00080F00080F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F8000FFF800>21 28 -2 0 26]76 dc[<FF8307FF801C030078000803007800080780780008
078078000807807800080F407800080F407800081E207800081E207800081E207800083C107800
083C107800083C10780008780878000878087800087808780008F004780008F004780008F00478
0009E002780009E00278000BC00178000BC00178000BC00178000F8000F8000F8000F800FF8000
FF80>33 28 -2 0 38]77 dc[<FF8004001C000C0008000C0008001C0008003C0008003C000800
7C0008007C000800F4000801E4000801E4000803C4000807C40008078400080F0400080F040008
1E0400083C0400083C04000878040008F8040008F0040009E0040009E004000BC004000F800400
0F800E00FF007FC0>26 28 -2 0 31]78 dc[<003F800000E0E0000380380007001C000E000E00
1C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001
E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C00
07000E000E0007001C000380380000E0E000003F8000>27 30 -2 1 32]79 dc[<FFF0000F0000
0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFF800F00E0
0F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E0FFFF80
>23 28 -2 0 28]80 dc[<00000F0000001F8000003FC000003FC0000038E00000306000006020
003FE02000F0E02003A0780007205C000E208E001C1107003C0E078038000380780003C0780003
C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E07000
01C0780003C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0E00000
3F8000>27 37 -2 8 32]81 dc[<000007C0FFF01C200F003C200F0038100F0078100F0078100F
0078000F0078000F0078000F0078000F0078000F0078000F00F0000F00E0000F03C0000FFF0000
0F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E000F001C000F003C
000F0078000F01E000FFFF0000>28 29 -2 1 31]82 dc[<83F800CC0C00D00200E00300C00180
C001808001C08001C08001C00001C00003C00007C0000F8000FF8007FF001FFE003FF8007FC000
7C0000F80000F00000E00080E00080E00080E001806001807003803005801C198007E080>18 30
-2 1 23]83 dc[<03FFFC00001F8000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000800F0020800F0020800F0020C00F0020400F0040400F0040600F00C0700F01C07F
FFFFC0>27 28 -1 0 30]84 dc[<001F00000070C00000C0200001801000038010000780080007
0008000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
000F0004000F000E00FFF07FC0>26 29 -2 1 31]85 dc[<000600000006000000060000000F00
00000F0000001F8000001E8000001E8000003C4000003C4000003C4000007820000078200000F8
300000F0100000F0100001F0080001E0080001E0080003C0040003C0040003C004000780020007
8002000F8003000F0001000F0001801F0003C0FFE00FF0>28 29 -1 1 31]86 dc[<0018001800
00180018000018001800003C003C00003C003C00003C003C00003E007C00007A007A00007A007A
00007900FA0000F100F10000F100F10000F100F10001E081E08001E081E08001E081E08003E043
C04003C043C04003C043C04003C02780400780278020078027802007801F00200F001F00100F00
1F00100F001F00101E001E00181F001F003CFFE0FFE0FF>40 29 -1 1 43]87 dc[<FFC0FFF01F
003F8006001F0002001E0003003C0001007C000080780000C0F8000041F0000021E0000023E000
0013C000000F8000000F8000000F0000001F0000001E0000003D0000007D80000078800000F040
0001F0600001E0200003E0100003C01800078018000FC03E007FF0FFC0>28 28 -1 0 31]88 dc
[<007FF80000078000000780000007800000078000000780000007800000078000000780000007
80000007800000078000000FC000000F4000001F2000001E2000003C1000007C18000078080000
F8040000F0040001F0020003E0020003C0010007C00180078000800F8001E0FFF007FC>30 28 0
0 31]89 dc[<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0FEFE>7 41 -4 10 12]91 dc[<30307878F8F8B0B0808080808080404040402020
10100808>13 12 -6 -17 21]92 dc[<FEFE060606060606060606060606060606060606060606
06060606060606060606060606060606FEFE>7 41 0 10 12]93 dc[<1F8700304E80603C40E0
1C40E01C40E01C40601C00701C00381C000F1C0001FC00001C00001C00301C00781C0078380030
70001FC000>18 18 -2 0 21]97 dc[<10F8001906001E03001C01801C01C01C00C01C00E01C00
E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E03001D86001C7C001C00001C00001C00
001C00001C00001C00001C00001C00001C00001C0000FC0000>19 29 -1 0 23]98 dc[<07C00C
301808300470046000E000E000E000E000E000E00060007030307818780C3007E0>14 18 -2 0
18]99 dc[<07C7E00C3700180F00300700700700600700E00700E00700E00700E00700E00700E0
0700600700700700300700180F000C170003E70000070000070000070000070000070000070000
0700000700000700000700003F00>19 29 -2 0 23]100 dc[<03E00C181804300270026000E0
00E000E000E000FFFEE0066006700E300C18180C3003E0>15 18 -1 0 18]101 dc[<7FE00E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00E000E000E000E
000E000E000E0C061E071E018C00F8>15 29 0 0 13]102 dc[<07F8001C0E00300300600180C0
00C0C000C0C000C06001C03003801FFF801FFF001FF80018000030000010000013C0000C30001C
3800181800381C00381C00381C00381C001818001C38800C38C003C4C0000380>18 28 -1 9 21
]103 dc[<FF9FF01C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801E03801D03001C87001C7C001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C0000FC0000>20 29 -1 0 23]104 dc[<FF801C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C00FC0000000000000000000000000000001800
3C003C001800>9 29 -1 0 12]105 dc[<3E006180F1C0F0C060E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E00FE0000000000000000000
000000000000C001E001E000C0>11 37 3 8 13]106 dc[<FF9FE01C0F801C0F001C0E001C1C00
1C3C001C38001C78001E70001DE0001CE0001C40001C20001C10001C08001C0C001C0F001C3FC0
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000FC0000>19 29 -1 0
22]107 dc[<FF801C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C00FC00>9 29 -1 0 12]108 dc[<FF8FF8
FF801C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001E01E01C001D019018001C
83883800FC7E07E000>33 18 -1 0 36]109 dc[<FF9FF01C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801E03801D03001C8700FC7C00>20 18
-1 0 23]110 dc[<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E0
01C0E001C06001807003803003001806000E1C0003F000>18 18 -1 0 21]111 dc[<FF80001C
00001C00001C00001C00001C00001C00001C00001CF8001D06001E03001C01801C01C01C01C01C
00E01C00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E03001D8600FC7C00>19 26
-1 8 23]112 dc[<003FE000070000070000070000070000070000070000070007C7000C370018
0F00300F00700700600700E00700E00700E00700E00700E00700E00700700700700700300F0018
0B000C330003C100>19 26 -2 8 22]113 dc[<FFC01C001C001C001C001C001C001C001C001C
001C001C001C001C301E781E781D30FCE0>13 18 -1 0 16]114 dc[<8FC0D060E010C018C018
8018803800F80FF03FE07F80F800E010C010C010403030701F90>13 18 -1 0 16]115 dc[<03
C00E200C101C101C101C101C101C101C001C001C001C001C001C001C001C001C00FFE03C001C00
0C000C000400040004000400>12 26 -1 0 16]116 dc[<03E3F00E1B800C07801C07801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FC1F80
>20 18 -1 0 23]117 dc[<00400000E00000E00000E00001D00001D00003D800038800038800
0704000704000704000E02000E02001C01001C01003C0380FF07E0>19 18 -1 0 22]118 dc[<
008020000180300001C0700001C0700003C0680003A0E80003A0E8000720C4000711C4000711C4
000E1182000E0B82000E0B82001C0B01001C0701001C0701803C0F0380FF3FCFE0>27 18 -1 0
30]119 dc[<FF0FF81E07C0040380060700020E00010E00009C0000F80000780000700000F000
01D80001C8000384000702000F03000F03807F8FF0>21 18 0 0 22]120 dc[<3C0000660000F3
0000F10000F0800000800000800000400000400000E00000E00000E00001D00001D00003D80003
88000388000704000704000704000E02000E02001C01001C01003C0380FF07E0>19 26 -1 8 22
]121 dc[<FFF87038700838083C0C1C040E040F040700038003C041C040E040F0407060387038
7FFC>14 18 -1 0 18]122 dc[<FFFFF0>20 1 0 -11 21]123 dc[<FFFFFFFFFF80>41 1 0
-11 42]124 dc dfe /fh df[<FFC07FFCFFC07FFC0E000FC006000F8006000F8003001F000300
1F0003FFFF0001FFFE0001803E0000C07C0000C07C0000E0FC000060F8000060F8000031F00000
31F000001BE000001BE000001BE000000FC000000FC00000078000000780000007800000030000
>30 26 -1 0 33]65 dc[<1FC3E07C27E0F81700F80F00F80F00F80F007C0F003E0F000FCF0000
FF00000F001C0F003E0F003E0E003E1E001C3C000FF000>19 17 -1 0 21]97 dc[<187F001D83
C01F00E01E00F01E00781E00781E007C1E007C1E007C1E007C1E007C1E00781E00781E00F01F00
E01FC3C01E7F001E00001E00001E00001E00001E00001E00001E0000FE0000FE0000>22 26 -1
0 25]98 dc[<03FC000F06001C03003C0180780000780000F80000F80000F80000F80000F80000
780E00781F003C1F001C1F000F0E0003FC00>17 17 -1 0 20]99 dc[<FFC0FFC01E001E001E00
1E001E001E001E001E001E001E1C1E3E1D3E1D3EFC9CFC78>15 17 -1 0 18]114 dc[<CFE0F8
30E008E00CC00CC00C003C07F83FF87FE0FF80F000C030C030403020701FB0>14 17 -1 0 17]
115 dc[<03E00F301E181E181E181E181E181E001E001E001E001E001E001E001E00FFF03FF01E
000E000E000600060006000600>13 24 -1 0 17]116 dc dfe /fi df[<7F0FF00E07000E0700
0E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E0700FFFFF0
0E07000E07000E07000E07000E07000E070006070407078E0183C600FC7C>23 26 0 0 22]11
dc[<7F0FE00E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E
07000E07000E0700FFFF000E00000E00000E00000E00000E00000E020006070007030001820000
FC00>19 26 0 0 21]12 dc[<C020101008080868F8F060>5 11 -3 -15 11]39 dc[<80402020
10101070F0F060>4 11 -3 7 11]44 dc[<FFC0FFC0>10 2 0 -7 13]45 dc[<60F0F060>4 4
-3 0 11]46 dc[<FF00FFC01C001E0008001C0008001C00040038000400380006007800020070
000200700001FFE0000100E0000100E0000081C0000081C0000081C00000438000004380000043
80000027000000270000003F0000001E0000001E0000000C0000000C0000000C0000>26 26 -1
0 29]65 dc[<FFFF800E01E00E00F00E00780E00380E003C0E003C0E003C0E003C0E003C0E0078
0E00700E01E00FFF800E03C00E00E00E00F00E00780E00780E00780E00780E00780E00700E00E0
0E01C0FFFF00>22 26 -2 0 27]66 dc[<003F0001C0C00300300E00081C00081C000438000478
0002700002700002F00000F00000F00000F00000F00000F000007000027000027800023800061C
00061C000E0E001E03002E01C0C6003F02>23 26 -2 0 28]67 dc[<FFE00E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
FFE0>11 26 -1 0 14]73 dc[<FF80101C00300800300800700800700800F00801D00801D00803
90080390080710080E10080E10081C10081C1008381008701008701008E01008E01009C0100B80
100B80100F00100F0038FE01FF>24 26 -2 0 29]78 dc[<007F000001C1C000070070000E0038
001C001C003C001E0038000E0078000F0078000F00F0000780F0000780F0000780F0000780F000
0780F0000780F0000780F00007807000070078000F0038000E003C001E001C001C000E00380007
00700001C1C000007F0000>25 26 -2 0 30]79 dc[<FFE0000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000FFF000E03C00E00E00E00700E00700E00780E00
780E00780E00780E00700E00700E00E00E03C0FFFF00>21 26 -2 0 26]80 dc[<FFE03E000E00
71000E00F0800E01E0800E01E0000E01E0000E01E0000E01C0000E01C0000E01C0000E0180000E
0300000E0600000FFC00000E0780000E01C0000E00E0000E00F0000E00F0000E00F0000E00F000
0E00F0000E00E0000E01C0000E078000FFFC0000>25 26 -2 0 28]82 dc[<87E0D818E004C006
C00280038003800300030007000E003E07FC1FF83FE07E007000E000C002C002C002C006600620
0E18360FC2>16 26 -2 0 21]83 dc[<003E0000C1800180400300400700200600200E00100E00
100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00100E00
100E00100E00100E00100E0038FFE1FF>24 26 -2 0 29]85 dc[<0020004000003000C0000070
00E000007000E000007801E000007801E00000E801D00000E403900000E403900001C403880001
C403880001C20708000382070400038207040003810E040007010E020007010E020007009C0200
07009C02000E009C01000E007801000E007801001C007800801C007800803C007801C0FF83FF0F
F0>36 26 -1 0 39]87 dc[<FF80FFC01E003E000C001C000400380002007800010070000100E0
000081E0000041C000004380000027800000170000001E0000001E0000001C0000003C0000007A
00000071000000E1800001E0800001C040000380600007802000070030000F003C007FC0FF00>
26 26 -1 0 29]88 dc[<1E3C71FBE0F1E071E071E070707030701C7007F000700070207070E0
70C03F80>16 16 -2 0 19]97 dc[<10F0001B0C001E07001C03001C03801C01C01C01C01C01C0
1C01C01C01C01C01C01C01801C03801E07001F0E001CF8001C00001C00001C00001C00001C0000
1C00001C00001C00001C0000FC0000>18 26 -1 0 21]98 dc[<07E00C18380830047000E000E0
00E000E000E000E00070003008381C0C1C07F8>14 16 -1 0 17]99 dc[<07CFC01C2E00381E00
700E00600E00E00E00E00E00E00E00E00E00E00E00E00E00700E00300E00380E000C3E0003CE00
000E00000E00000E00000E00000E00000E00000E00000E00000E00007E00>18 26 -1 0 21]
100 dc[<07E00C18380830046000E000E000E000E000FFFCE00C600C701830181C3007C0>14 16
-1 0 17]101 dc[<7FE00E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF
C00E000E000E000E000E000E000E100738031801F0>13 26 0 0 12]102 dc[<07E0381C6006C0
03C003C003C003600F1FFE3FFC3FF07000600020002FC018603030703870387038703830301873
0FCE>16 24 -1 8 19]103 dc[<FF9FC01C0E001C0E001C0E001C0E001C0E001C0E001C0E001C
0E001C0E001C0E001C0E001E0E001E0E001D0C001CF8001C00001C00001C00001C00001C00001C
00001C00001C00001C0000FC0000>18 26 -1 0 21]104 dc[<FF801C001C001C001C001C001C
001C001C001C001C001C001C001C001C00FC0000000000000000000000000018003C003C001800
>9 26 0 0 10]105 dc[<7E00E300E18041C001C001C001C001C001C001C001C001C001C001C0
01C001C001C001C001C001C001C001C00FC0000000000000000000000000018003C003C00180>
10 33 2 7 12]106 dc[<FF3FC01C1F001C1E001C1C001C38001C78001C70001CE0001FE0001D
C0001C40001C20001C10001C18001C1E001C3F801C00001C00001C00001C00001C00001C00001C
00001C00001C0000FC0000>18 26 -1 0 20]107 dc[<FF801C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FC00>9 26
0 0 10]108 dc[<FF9FE7F81C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701
C01C0701C01C0701C01C0701C01C0701C01E0781C01E0781C01D8E6380FC7C1F00>29 16 -1 0
32]109 dc[<FF9FC01C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E001E0E001E0E001D0C00FCF800>18 16 -1 0 21]110 dc[<07E01C38381C700E6006E007
E007E007E007E007E0076006700E300C1C3807E0>16 16 -1 0 19]111 dc[<FF80001C00001C
00001C00001C00001C00001C00001CF0001F0C001E07001C03001C03801C01C01C01C01C01C01C
01C01C01C01C01C01C03801C03801E07001F0E00FCF800>18 23 -1 7 21]112 dc[<007FC000
0E00000E00000E00000E00000E00000E0007CE001C2E00381E00700E00700E00E00E00E00E00E0
0E00E00E00E00E00E00E00700E00300E00381E000C260003C200>18 23 -1 7 20]113 dc[<FF
C01C001C001C001C001C001C001C001C001C001C001C001E201E701D70FCE0>12 16 -1 0 15]
114 dc[<8F80F040C020C0308030807000F01FE03FC07F00F000C020C020402060E01F20>12 16
-1 0 15]115 dc[<03800E401C201C201C201C201C201C001C001C001C001C001C001C001C00FF
C03C001C000C000C00040004000400>11 23 -1 0 15]116 dc[<07CFC00C2E001C1E001C0E00
1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00FC7E00>18 16
-1 0 21]117 dc[<00800001C00001C00001C00003A00003A0000790000710000710000E08000E
08001E0C001C04001C04003C0600FF1F80>17 16 -1 0 20]118 dc[<010040000180C0000380
E0000380E00003C1E0000741D000074190000F2398000E2388000E2308001E170C001C1704001C
160400380E06003C0E0700FF3F9F80>25 16 -1 0 28]119 dc[<780000E40000E20000E10000
01000001000000800000800001C00001C00001C00003A00003A0000790000710000710000E0800
0E08001E0C001C04001C04003C0600FF1F80>17 23 -1 7 20]121 dc dfe /fj df[<007800C0
01800300030003000300030003000300030003000300030006000C00F0000C0006000300030003
0003000300030003000300030003000300018000C00078>13 33 -2 8 18]102 dc[<F0000C00
060003000300030003000300030003000300030003000300018000C0007800C001800300030003
000300030003000300030003000300030006000C00F000>13 33 -2 8 18]103 dc dfe /fk df
[<FF1FE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07
00FFFFE01C07001C07001C07001C07001C07001C07080E079C07839C00FCF8>22 23 0 0 21]
11 dc[<FF1FE01C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07
001C0700FFFF001C00001C00001C00001C00001C02001C07000E070007820000FC00>19 23 0 0
20]12 dc[<FF1FCFF01C0703801C0703801C0703801C0703801C0703801C0703801C0703801C07
03801C0703801C0703801C0703801C070380FFFFFF801C0700001C0700001C0700001C0700001C
0701001C0703800E0783800703C10000FC7E00>28 23 0 0 29]14 dc[<408040802040204010
20102070E0F1E0F1E060C0>11 10 -1 -13 18]34 dc[<40402020101070F0F060>4 10 -3 -13
10]39 dc[<40402020101070F0F060>4 10 -3 6 10]44 dc[<FF80FF80>9 2 0 -6 12]45 dc[
<60F0F060>4 4 -3 0 10]46 dc[<C000C0006000600060003000300030001800180018000C00
0C000C000600060006000300030001800180018000C000C000C000600060006000300030003000
180008>13 33 -2 8 18]47 dc[<07C01C703018701C600C600CE00EE00EE00EE00EE00EE00EE0
0EE00EE00E600C600C701C3018183007C0>15 21 -1 0 18]48 dc[<FFF07FF03FF0101808080C
0806000300018000C000600070007000384038E038C0388030407030E00F80>13 21 -2 0 18]
50 dc[<1F0020C040608030E038E0384038003800380030207030E02F80200020002000200024
003FC03FE02030>13 21 -2 0 18]53 dc[<00FF000300F00C001C1000002078F020C588418388
43838483038487038487038487038487038487038483038443838841820820C410207810100020
0C00C003030000FC00>22 23 -2 0 27]64 dc[<FE03FE3800F01800E00800E00800E00401C004
01C007FFC0020380020380030780010700010700008E00008E00008E00005C00005C00005C0000
3800003800003800001000>23 23 -1 0 26]65 dc[<FFFF001C01C01C00E01C00701C00381C00
381C00381C00381C00301C00701C00E01FFFC01FFF801C01C01C00E01C00701C00701C00701C00
701C00601C00E01C0380FFFE00>21 23 -1 0 25]66 dc[<00FC000383000E00801C0040380020
300020700010600010E00010E00000E00000E00000E00000E00000E00010600010700010300030
3800301C00700E00B003833000FC10>20 23 -2 0 25]67 dc[<FFFFF01C00F01C00301C00101C
00101C00181C00081C04081C04081C04001C0C001FFC001C0C001C04001C04001C04001C00101C
00101C00101C00201C00601C00E0FFFFE0>21 23 -1 0 24]69 dc[<FE040FF8380E01C0100E01
C0100E01C0101D01C0101D01C0103881C0103881C0107041C0107041C0107041C010E021C010E0
21C011C011C011C011C011C011C0138009C0138009C0170005C0170005C0170005C01E0003C0FE
0003F8>29 23 -1 0 32]77 dc[<FE00103800301000301000701000F01001D01001D010039010
0710100F10100E10101C1010381010381010701010E01011C01011C0101380101700101F00101E
0038FC00FE>23 23 -1 0 26]78 dc[<07FFC00038000038000038000038000038000038000038
000038000038000038000038000038000038000038000038008038048038048038044038084038
086038187FFFF8>22 23 -1 0 25]84 dc[<007E000181800300400600200E00201C00101C0010
1C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C00101C0010
1C00101C0038FF80FE>23 23 -1 0 26]85 dc[<00600300000060030000006003000000F00780
0000F007800000F007800001D80F400001C80E400001C80E400003880E200003841C200003841C
200007041C1000070238100007023810000E023808000E017008000E017008001C017004001C00
E004001C00E004003C01E00E00FF07FC3F80>33 23 -1 0 36]87 dc[<60C0F1E0F1E0E1C08100
81004080408020402040>11 10 -5 -13 18]92 dc[<1F1E70FFE079E039E039703830381E3803
F800381038383038601FC0>16 14 -1 0 18]97 dc[<10F8001B0E001C03001C03801C01801C01
C01C01C01C01C01C01C01C01801C03801C03001F06001CF8001C00001C00001C00001C00001C00
001C00001C00001C0000FC0000>18 23 0 0 20]98 dc[<07C01830300870086000E000E000E0
00E000600070103038183807F0>13 14 -1 0 16]99 dc[<07CFC0182E00301E00700E00600E00
E00E00E00E00E00E00E00E00600E00700E00300E001C3E0007CE00000E00000E00000E00000E00
000E00000E00000E00000E00007E00>18 23 -1 0 20]100 dc[<07C01830301070086000E000
E000E000FFF8E0187038303018600FC0>13 14 -1 0 16]101 dc[<FF801C001C001C001C001C
001C001C001C001C001C001C001C00FF801C001C001C001C001C001C200E70067003E0>12 23 0
0 11]102 dc[<0FE03838600CC006C006C006600E3FFC3FF83FE0600020002F8018C030607070
70707070306018E30F9E>16 21 -1 7 18]103 dc[<FF9FE01C07001C07001C07001C07001C07
001C07001C07001C07001C07001C07001E07001D8E001C7C001C00001C00001C00001C00001C00
001C00001C00001C0000FC0000>19 23 0 0 20]104 dc[<FF1C1C1C1C1C1C1C1C1C1C1C1C7C00
00000000183C3C18>8 23 0 0 10]105 dc[<FF3FC01C1E001C1E001C3C001C78001C70001CF0
001FE0001CC0001C40001C20001C18001C1C001C3F801C00001C00001C00001C00001C00001C00
001C00001C0000FC0000>18 23 0 0 19]107 dc[<FF801C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C00FC00>9 23 0 0 10]108 dc[<
FF9FE7F81C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701C01C0701
C01C0701C01E0781C01D8E6380FC7C1F00>29 14 0 0 30]109 dc[<FF9FE01C07001C07001C07
001C07001C07001C07001C07001C07001C07001C07001E07001D8E00FC7C00>19 14 0 0 20]
110 dc[<07C018303018701CE00EE00EE00EE00EE00E600C600C3018183007C0>15 14 -1 0 18
]111 dc[<FF80001C00001C00001C00001C00001C00001CF8001F0E001C07001C03801C01801C
01C01C01C01C01C01C01C01C01801C03801C03001F0E00FCF800>18 20 0 6 20]112 dc[<FF80
1C001C001C001C001C001C001C001C001C001C101E381D38FCF0>13 14 0 0 14]114 dc[<9F00
E0C0C0608060806001E01FC07F80FF00E000C040C04060C01F40>11 14 -1 0 14]115 dc[<0F
001C8038403840384038403800380038003800380038003800FF80380018001800080008000800
>10 20 -1 0 14]116 dc[<03E7E00E17001C0F001C07001C07001C07001C07001C07001C0700
1C07001C07001C07001C0700FC3F00>19 14 0 0 20]117 dc[<0180018003C003C003C0072007
200E100E101C081C083C0C3C0EFE1F>16 14 -1 0 19]118 dc[<030300030300070380078780
0787800E86400E4E400E4E401C4C201C3C201C3C20383810383838FCFE7C>22 14 -1 0 25]
119 dc[<FC7F383C1838087004F002E001C0038007C007400E201C103C18FE3F>16 14 -1 0 19
]120 dc[<7800A400E200E200010001000180018003C003C003C0072007200E100E101C081C08
3C0C3C0EFE1F>16 20 -1 6 19]121 dc dfe /fl df[<FFC00C000C000C000C000C000C000C00
0C000C000C000C000C000C000C000C00EC001C000C00>10 19 -3 0 17]49 dc[<FFE07FE02020
1010081004000200018001C000C00060007000706030F030F070606060C01F00>12 19 -2 0 17
]50 dc[<1FC06070E038F018F01C601C001C0018003800700FC000E00030003870387038703830
700FC0>14 19 -1 0 17]51 dc dfe /fm df[<FF800C000C000C000C000C000C000C000C000C
000C000C000C00CC003C000C00>9 16 -2 0 15]49 dc[<FFC07FC0202010200C000600030001
8000C000600060C060806040C061801F00>11 16 -1 0 15]50 dc[<1F0060808040C060C06000
60004000800F000180008000C060C060C021801F00>11 16 -1 0 15]51 dc dfe end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
 TeXDict begin /filename (submit.dvi) def
 /dateandtime (Tue Aug 18 13:54:03 1992
) def
 @defaultFormat
%%EndSetup
%%Page: 1 1
1 bop 340 357 a fa(The)22 b(Nac)n(hos)f(Instructional)g(Op)r(erating)h(System)
247 469 y fd(W)l(a)o(yne)16 b(A.)f(Christopher,)h(Stev)o(en)f(J.)h(Pro)q(cter\
,)g(and)h(Thomas)f(E.)g(Anderson)687 570 y(Computer)g(Science)e(Division)725
628 y(Univ)o(ersit)o(y)g(of)i(California)766 678 y(Berk)o(eley)l(,)d(CA)j(947\
20)890 853 y fh(Abstract)236 918 y fi(In)f(teac)o(hing)h(op)q(erating)g(syste\
ms)f(at)f(an)h(undergraduate)h(lev)o(el,)g(it)f(is)g(v)o(ery)g(imp)q(ortan)o
(t)h(to)e(pro)o(vide)i(a)179 964 y(pro)r(ject)10 b(that)h(is)g(realistic)i
(enough)e(to)g(sho)o(w)f(ho)o(w)h(real)g(op)q(erating)h(systems)f(w)o(ork,)g
(y)o(et)f(simple)i(enough)g(that)179 1010 y(the)g(studen)o(ts)h(can)g(underst\
and)h(and)f(mo)q(dify)g(it)g(in)g(signi\014can)o(t)i(w)o(a)o(ys.)h(A)c(n)o
(um)o(b)q(er)h(of)f(these)h(instructional)179 1055 y(systems)c(ha)o(v)o(e)h
(b)q(een)f(created)h(o)o(v)o(er)f(the)g(last)g(t)o(w)o(o)g(decades,)h(but)f
(recen)o(t)h(c)o(hanges)g(in)f(hardw)o(are)h(and)f(soft)o(w)o(are)179 1101 y
(design,)14 b(along)g(with)f(the)g(increasing)i(p)q(o)o(w)o(er)d(of)h(a)o(v)n
(ailable)i(computational)h(resources,)d(ha)o(v)o(e)g(c)o(hanged)h(the)179 1147
y(basis)g(for)f(man)o(y)g(of)g(the)g(tradeo\013s)h(made)g(b)o(y)f(these)g(sys\
tems.)236 1192 y(W)m(e)19 b(ha)o(v)o(e)g(implemen)o(ted)i(an)e(instructional)
j(op)q(erating)e(system,)g(called)g(Nac)o(hos,)g(and)g(designed)g(a)179 1238 y
(series)14 b(of)g(assignmen)o(ts)h(to)f(go)g(with)g(it.)19 b(Our)13 b(system)
h(includes)i(CPU)d(and)i(device)g(sim)o(ulators,)g(and)f(runs)179 1284 y(as)g
(a)h(regular)h(UNIX)d(pro)q(cess.)23 b(Nac)o(hos)15 b(illustrates)i(and)e(tak)
o(es)g(adv)n(an)o(tage)g(of)g(mo)q(dern)g(OS)g(tec)o(hnology)m(,)179 1329 y
(suc)o(h)j(as)g(threads)h(and)f(remote)g(pro)q(cedure)h(calls,)i(recen)o(t)d
(hardw)o(are)g(adv)n(ances,)i(suc)o(h)f(as)f(RISC's)f(and)179 1375 y(the)d
(prev)n(alence)i(of)e(memory)g(hierarc)o(hies,)j(and)d(mo)q(dern)h(soft)o(w)o
(are)f(design)i(tec)o(hniques,)g(suc)o(h)f(as)f(ob)r(ject-)179 1421 y(orien)o
(ted)g(programming)h(and)f(distributed)h(computing.)236 1466 y(W)m(e)10 b(ha)
o(v)o(e)h(used)g(Nac)o(hos)f(in)h(the)f(undergraduate)i(op)q(erating)g(system\
s)e(class)h(at)f(Berk)o(eley)m(,)i(with)e(p)q(ositiv)o(e)179 1512 y(results.)
25 b(Nac)o(hos)16 b(is)f(freely)h(a)o(v)n(ailable,)j(and)d(w)o(e)f(w)o(ould)h
(lik)o(e)h(to)e(see)g(it)h(widely)h(used)f(for)f(undergraduate)179 1558 y(ins\
truction.)75 1695 y fb(1)69 b(In)n(tro)r(duction)75 1786 y fg(In)19 b(undergr\
aduate)h(computer)f(science)h(education,)g(course)g(pro)r(jects)h(pro)o(vide)
d(a)h(useful)g(to)q(ol)f(for)h(teac)o(hing)75 1836 y(basic)f(concepts)h(and)e
(for)g(sho)o(wing)g(ho)o(w)g(those)h(concepts)i(can)d(b)q(e)h(used)h(to)e(sol\
v)o(e)g(real-w)o(orld)g(problems.)28 b(A)75 1886 y(realistic)13 b(pro)r(ject)
h(is)f(esp)q(ecially)h(imp)q(ortan)o(t)d(in)i(undergraduate)h(op)q(erating)f
(systems)g(courses,)i(where)f(man)o(y)e(of)75 1935 y(the)i(concepts)i(are)e
(b)q(est)h(taugh)o(t,)f(w)o(e)g(b)q(eliev)o(e,)f(b)o(y)h(example)f(and)g(exp)
q(erimen)o(tation.)137 1985 y(This)i(pap)q(er)g(discusses)i(an)d(op)q(erating)
g(system,)g(sim)o(ulation)e(en)o(vironmen)o(t,)h(and)i(set)g(of)f(assignmen)o
(ts)g(that)75 2035 y(w)o(e)g(dev)o(elop)q(ed)h(for)e(the)i(undergraduate)g
(op)q(erating)e(systems)h(course)i(at)d(Berk)o(eley)m(.)137 2085 y(Ov)o(er)j
(the)g(y)o(ears,)f(n)o(umerous)f(pro)r(jects)j(ha)o(v)o(e)e(b)q(een)h(dev)o
(elop)q(ed)f(for)g(teac)o(hing)g(op)q(erating)g(systems;)g(among)75 2135 y
(the)f(published)g(ones)g(are)f(T)m(unis)g([Holt)g(1983])f(and)h(Minix)f([T)m
(anen)o(baum)f(1987b,)h(Aguirre)i(et)g(al.)j(1991].)f(Man)o(y)75 2184 y(of)g
(these)i(pro)r(jects)f(w)o(ere)h(motiv)n(ated)c(b)o(y)i(the)h(dev)o(elopmen)o
(t)f(of)g(UNIX)g([Ritc)o(hie)g(&)g(Thompson)f(1974])g(in)h(the)75 2234 y(mid)
c(70's.)18 b(Earlier)c(op)q(erating)g(systems,)g(suc)o(h)h(as)f(MUL)m(TICS)g
([Daley)f(&)h(Dennis)h(1968])d(and)i(OS/360)g([Mealy)75 2284 y(et)i(al.)24 b
(1966])14 b(w)o(ere)j(far)e(to)q(o)h(complicated)f(for)g(an)h(undergraduate)h
(to)e(understand,)j(m)o(uc)o(h)c(less)j(mo)q(dify)m(,)c(in)i(a)75 2321 y 720 2
v 139 2359 a fk(A)d(cop)o(y)e(of)i(Nac)o(hos)f(can)f(b)q(e)i(obtained)d(b)o
(y)i(anon)o(ymous)e(ftp)i(from)f(sprite.b)q(erk)o(ele)o(y)m(.e)o(du,)e(\014le)
j(\\nac)o(hos/nac)o(h)o(os-2)o(.0.t)o(ar")o(.)i(The)75 2399 y(authors')8 b
(e-mail)g(addresses)g(are)h fj(f)p fk(faustus,pro)q(c)o(ter)o(,tea)o fj(g)p fk
(@cs.berk)n(eley)l(.ed)o(u.)j(This)e(w)o(ork)f(w)o(as)h(supp)q(orted)e(in)h
(part)g(b)o(y)g(a)h(gran)o(t)e(from)75 2438 y(the)j(College)f(of)h(Engineerin\
g,)e(Univ)o(ersit)o(y)h(of)h(California)e(at)j(Berk)o(eley)m(.)965 2574 y fg
(1)g eop
%%Page: 2 2
2 bop 75 307 a fg(semester.)24 b(Ev)o(en)16 b(UNIX)g(itself)f(is)h(to)q(o)f
(complicated)f(for)i(this)f(purp)q(ose,)i(but)f(UNIX)g(sho)o(w)o(ed)f(that)h
(op)q(erating)75 357 y(systems)c(need)g(only)e(a)i(few)f(simple)f(but)h(p)q
(o)o(w)o(erful)g(in)o(terfaces,)i(and)e(that)g(the)h(core)g(of)f(an)g(op)q
(erating)h(system)f(can)75 407 y(b)q(e)k(written)f(in)g(only)f(a)h(few)g(doze\
n)h(pages)f([Lions)f(1977].)18 b(Indeed,)c(the)h(pro)r(ject)g(previously)f
(used)h(at)f(Berk)o(eley)m(,)75 457 y(the)g(TO)o(Y)h(Op)q(erating)f(System,)f
(w)o(as)h(originally)d(dev)o(elop)q(ed)k(b)o(y)e(Brian)h(Kernighan)g(in)g(197\
3.)137 506 y(The)j(in)o(tro)q(duction)f(of)f(minicomputers,)f(and)i(later,)h
(w)o(orkstations,)f(also)f(aided)h(the)h(dev)o(elopmen)o(t)e(of)h(in-)75 556 y
(structional)10 b(op)q(erating)f(systems.)17 b(Rather)10 b(than)g(ha)o(ving)e
(to)i(run)g(the)g(op)q(erating)g(system)f(on)h(the)g(bare)g(hardw)o(are,)75
606 y(computing)k(cycles)k(b)q(ecame)e(c)o(heap)g(enough)h(to)f(mak)o(e)e(it)
i(feasible)g(to)g(execute)i(an)e(op)q(erating)g(system)f(k)o(ernel)75 656 y
(using)e(a)h(sim)o(ulation)d(of)i(real)g(hardw)o(are.)19 b(The)14 b(op)q(erat\
ing)f(system)h(can)f(run)h(as)g(a)g(normal)d(UNIX)j(pro)q(cess,)h(and)75 706 y
(in)o(v)o(ok)o(e)g(the)h(sim)o(ulator)e(when)i(it)g(w)o(ould)f(otherwise)h
(access)i(ph)o(ysical)d(devices)i(or)f(execute)i(user)f(instructions.)75 756 y
(This)d(v)n(astly)f(simpli\014es)g(op)q(erating)h(systems)g(dev)o(elopmen)o
(t,)f(b)o(y)h(reducing)h(the)g(compile-execute-debug)f(cycle)75 805 y(and)k
(b)o(y)g(allo)o(wing)e(the)i(use)h(of)f(o\013-the-shelf)g(sym)o(b)q(olic)f
(debuggers.)32 b(Because)20 b(of)d(these)j(adv)n(an)o(tages,)e(man)o(y)75 855
y(commercial)13 b(op)q(erating)i(system)g(dev)o(elopmen)o(t)f(e\013orts)j(no)
o(w)d(routinely)h(use)h(sim)o(ulated)e(mac)o(hines)g([Bedic)o(hek)75 905 y
(1990].)137 955 y(Ho)o(w)o(ev)o(er,)f(recen)o(t)i(adv)n(ances)e(in)f(op)q(era\
ting)h(systems,)g(hardw)o(are)g(arc)o(hitecture,)h(and)f(soft)o(w)o(are)g(eng\
ineering)75 1005 y(ha)o(v)o(e)d(left)h(man)o(y)d(op)q(erating)i(systems)h(pro)
r(jects)h(dev)o(elop)q(ed)f(o)o(v)o(er)g(the)g(past)f(t)o(w)o(o)g(decades)i
(out)f(of)f(date.)17 b(Net)o(w)o(ork-)75 1054 y(ing)d(and)g(distributed)g(app\
lications)g(are)g(no)o(w)g(commonplace.)j(Threads)e(are)f(crucial)h(for)e(the)
i(construction)h(of)75 1104 y(b)q(oth)f(op)q(erating)g(systems)g(and)g(higher\
-lev)o(el)f(concurren)o(t)j(applications.)j(And)15 b(the)g(cost-p)q(erformanc\
e)g(trade-)75 1154 y(o\013s)g(among)d(memory)m(,)f(CPU)k(sp)q(eed)h(and)e(sec\
ondary)i(storage)e(are)h(no)o(w)f(quite)h(di\013eren)o(t)g(from)e(those)i(imp)
q(osed)75 1204 y(b)o(y)f(core)g(memory)m(,)d(discrete)k(logic,)e(magnetic)f
(drums,)h(and)h(card)g(readers.)137 1254 y(F)m(or)j(these)i(reasons,)g(w)o
(e)f(decided)g(to)f(design)h(and)f(implemen)o(t)e(a)i(new)h(teac)o(hing)g(op)
q(erating)f(system)g(and)75 1303 y(sim)o(ulation)f(en)o(vironmen)o(t.)32 b
(Our)19 b(system,)g(called)g(Nac)o(hos,)h(mak)o(es)d(it)i(p)q(ossible)g(to)g
(giv)o(e)f(assignmen)o(ts)g(that)75 1353 y(require)c(studen)o(ts)h(to)e(write)
g(signi\014can)o(t)g(p)q(ortions)g(of)g(eac)o(h)h(of)e(the)i(ma)r(jor)e(piece\
s)i(of)f(a)g(mo)q(dern)f(op)q(erating)i(sys-)75 1403 y(tem:)i(thread)c(manage\
men)o(t,)c(\014le)j(systems,)h(m)o(ultiprogram)o(m)o(i)o(ng,)c(virtual)i(memo\
ry)m(,)f(and)i(net)o(w)o(orking.)16 b(W)m(e)11 b(use)75 1453 y(these)17 b(ass\
ignmen)o(ts)d(to)h(illustrate)g(concepts)i(that)e(w)o(e)h(b)q(eliev)o(e)f(are)
h(necessary)h(to)e(understand)h(the)g(computer)75 1503 y(systems)11 b(of)f
(to)q(da)o(y)g(and)g(of)g(the)i(future:)17 b(concurrency)12 b(and)f(sync)o
(hronization,)f(cac)o(hing)h(and)f(lo)q(calit)o(y)m(,)f(the)i(trade-)75 1553 y
(o\013)17 b(b)q(et)o(w)o(een)h(simplicit)o(y)c(and)j(p)q(erformance,)g(buildi\
ng)e(reliabilit)o(y)g(from)g(unreliable)h(comp)q(onen)o(ts,)h(dynamic)75 1602
y(sc)o(heduling,)d(the)g(p)q(o)o(w)o(er)g(of)g(a)f(lev)o(el)h(of)f(translatio\
n,)g(distributed)h(computing,)e(la)o(y)o(ering,)g(and)i(virtualization.)137
1652 y(In)j(building)e(Nac)o(hos,)j(w)o(e)f(w)o(ere)g(con)o(tin)o(ually)f(fac\
ed)h(with)f(a)h(tradeo\013)g(b)q(et)o(w)o(een)h(simplicit)o(y)c(and)j(realism\
.)75 1702 y(F)m(or)12 b(example,)e(a)i(complete)g(UNIX-lik)o(e)f(\014le)h(sys\
tem)g(w)o(ould)f(b)q(e)i(to)q(o)f(complicated)f(for)g(studen)o(ts)j(to)e(unde\
rstand)75 1752 y(in)i(only)f(a)h(few)h(w)o(eeks.)20 b(Our)15 b(approac)o(h)f
(w)o(as)g(to)g(build)g(the)h(simplest)e(implemen)o(tation)e(w)o(e)k(could)f
(think)g(of)f(for)75 1802 y(eac)o(h)18 b(sub-system)f(of)g(Nac)o(hos;)h(this)
f(pro)o(vides)h(studen)o(ts)g(a)f(w)o(orking)f(example,)h(alb)q(eit)f(o)o(v)o
(erly)h(simplistic,)f(of)75 1851 y(the)f(op)q(eration)f(of)f(eac)o(h)i(comp)q
(onen)o(t)e(of)g(an)h(op)q(erating)g(system.)k(The)d(assignmen)o(ts)e(ask)h
(the)h(studen)o(ts)g(to)f(add)75 1901 y(functionalit)o(y)f(to)i(this)h(bare-b)
q(ones)g(system)f(and)f(to)h(impro)o(v)o(e)f(its)h(p)q(erformance)g(on)f(micr\
o-b)q(enc)o(hmarks)g(that)75 1951 y(w)o(e)i(pro)o(vide.)22 b(As)16 b(a)f(resu\
lt)h(of)f(our)g(emphasis)g(on)g(simplicit)o(y)m(,)d(the)k(Nac)o(hos)g(op)q
(erating)f(system)g(is)h(ab)q(out)f(2500)75 2001 y(lines)h(of)f(co)q(de,)i
(ab)q(out)f(half)f(of)g(whic)o(h)h(are)g(dev)o(oted)h(to)e(in)o(terface)i(des\
criptions)g(and)f(commen)o(ts.)1666 1986 y fl(1)1707 2001 y fg(It)g(is)g(th)o
(us)75 2051 y(practical)e(for)f(studen)o(ts)j(to)d(read,)h(understand,)h(and)
f(mo)q(dify)d(Nac)o(hos)j(during)g(a)g(single)f(semester)i(course.)137 2100 y
(W)m(e)20 b(ha)o(v)o(e)g(used)i(Nac)o(hos)f(for)f(one)g(term)g(as)g(the)h(pro)
r(ject)h(for)e(the)h(undergraduate)h(op)q(erating)e(systems)75 2150 y(course)
e(at)f(Berk)o(eley;)i(w)o(e)e(then)g(revised)h(b)q(oth)f(the)h(co)q(de)f(and)
g(the)g(assignmen)o(ts)f(based)i(on)f(our)f(exp)q(eriences)75 2200 y(with)d
(using)g(it.)k(Nac)o(hos)c(curren)o(tly)h(runs)g(only)e(on)h(DEC)g(MIPS)g(w)o
(orkstations,)g(but)g(w)o(e)h(b)q(eliev)o(e)f(that)g(it)g(w)o(ould)75 2250 y
(b)q(e)i(straigh)o(tforw)o(ard)e(to)h(p)q(ort)g(to)f(other)i(platforms.)137
2300 y(The)d(rest)h(of)d(this)i(pap)q(er)g(describ)q(es)i(Nac)o(hos)d(in)g
(more)g(detail.)16 b(Section)c(2)f(pro)o(vides)h(an)f(o)o(v)o(erview)g(of)g
(Nac)o(hos;)75 2350 y(Section)j(3)g(describ)q(es)i(the)e(Nac)o(hos)h(assignme\
n)o(ts.)i(Sections)e(4)e(and)h(5)f(summarize)f(our)i(exp)q(eriences.)75 2384 y
720 2 v 121 2411 a fm(1)139 2423 y fk(The)9 b(hardw)o(are)e(sim)o(ulator)g
(tak)o(es)g(up)i(another)e(2500)h(lines,)g(but)g(studen)o(ts)f(need)h(not)g
(understand)e(the)i(details)g(of)g(its)h(op)q(eration.)965 2574 y fg(2)g eop
%%Page: 3 3
3 bop 75 307 a fb(2)69 b(Nac)n(hos)24 b(Ov)n(erview)75 398 y fg(Lik)o(e)12 b
(man)o(y)e(of)i(its)h(predecessor)i(instructional)d(op)q(erating)g(systems,)g
(the)h(Nac)o(hos)g(k)o(ernel)g(and)f(hardw)o(are)h(sim)o(u-)75 448 y(lator)e
(run)i(together)g(in)e(the)i(same)e(UNIX)h(pro)q(cess.)888 433 y fl(2)926 448
y fg(Nac)o(hos)g(has)g(sev)o(eral)h(signi\014can)o(t)e(di\013erences)j(with)e
(earlier)75 498 y(systems:)137 589 y ff(\017)21 b fg(Because)g(w)o(e)f(sim)o
(ulate)e(a)i(standard,)h(w)o(ell-do)q(cumen)o(ted,)f(instruction)g(set)h(\(MI\
PS)f(R2/3000)e(in)o(teger)179 639 y(instructions)27 b([Kane)14 b(1987]\),)e
(w)o(e)h(can)h(run)g(normal)d(C)j(programs)e(as)h(user)i(programs)d(on)i(our)
f(op)q(erating)179 689 y(system.)j(In)9 b(the)h(past,)g(op)q(erating)g(system\
s)f(pro)r(jects)i(t)o(ypically)d(sim)o(ulated)f(their)j(o)o(wn)f(ad)g(ho)q
(c)h(instruction)179 738 y(set,)18 b(requiring)e(user)i(programs)d(to)i(b)q
(e)g(written)g(in)f(assem)o(bly)g(language.)25 b(Because)19 b(the)e(R2/3000)e
(is)h(a)179 788 y(RISC,)d(it)g(can)h(b)q(e)h(sim)o(ulated)d(with)i(only)f(ab)
q(out)g(10)h(pages)g(of)f(co)q(de.)137 871 y ff(\017)21 b fg(W)m(e)14 b(accur\
ately)h(sim)o(ulate)e(the)j(b)q(eha)o(vior)e(of)g(a)h(net)o(w)o(ork)g(of)f
(w)o(orkstations,)g(eac)o(h)h(running)g(Nac)o(hos.)20 b(W)m(e)179 921 y(conne\
ct)15 b(Nac)o(hos)g(\\mac)o(hines",)d(eac)o(h)j(running)f(as)g(a)g(UNIX)h(pro)
q(cess,)g(together)g(via)f(so)q(c)o(k)o(ets.)20 b(A)14 b(thread)179 971 y(on)
h(one)g(\\mac)o(hine")f(can)h(then)h(send)g(a)f(message)g(to)g(a)g(thread)h
(running)f(on)g(a)g(di\013eren)o(t)h(\\mac)o(hine";)e(of)179 1021 y(course,)g
(b)q(oth)h(are)f(sim)o(ulated)e(on)i(the)g(same)f(ph)o(ysical)h(hardw)o(are.)
137 1104 y ff(\017)21 b fg(Our)d(sim)o(ulation)c(is)k(deterministic.)28 b(Deb\
ugging)16 b(non-rep)q(eatable)j(execution)f(sequences)i(is)d(a)g(fact)h(of)
179 1154 y(life)13 b(for)g(professional)h(op)q(erating)f(systems)h(engineers,)
h(but)f(it)g(did)f(not)h(seem)g(advisable)f(for)g(us)i(to)e(mak)o(e)179 1203 y
(that)i(exp)q(erience)h(our)f(studen)o(ts')h(\014rst)f(in)o(tro)q(duction)g
(to)f(op)q(erating)h(systems.)21 b(Instead)15 b(of)f(using)h(UNIX)179 1253 y
(signals)i(to)g(sim)o(ulate)f(async)o(hronous)j(devices)f(suc)o(h)h(as)f(the)
g(disk)f(and)h(the)g(timer,)f(Nac)o(hos)h(main)o(tains)179 1303 y(a)f(sim)o
(ulated)e(time)h(that)h(is)g(incremen)o(ted)g(whenev)o(er)i(a)e(user)h(progra\
m)d(executes)20 b(an)d(instruction)g(and)179 1353 y(whenev)o(er)d(a)f(call)g
(is)g(made)f(to)h(certain)g(lo)o(w-lev)o(el)f(op)q(erating)h(system)g(routine\
s.)18 b(In)o(terrupt)d(handlers)f(are)179 1403 y(then)g(in)o(v)o(ok)o(ed)f
(when)i(the)f(sim)o(ulated)e(time)h(reac)o(hes)i(the)g(appropriate)f(p)q(oin)
o(t.)1434 1388 y fl(3)137 1486 y ff(\017)21 b fg(Our)g(sim)o(ulation)c(is)k
(also)e(randomizable)g(to)h(add)g(unpredictable,)j(but)d(rep)q(eatable,)j(b)q
(eha)o(vior.)37 b(F)m(or)179 1536 y(instance,)13 b(the)g(net)o(w)o(ork)g(sim)
o(ulation)c(randomly)i(c)o(ho)q(oses)j(whic)o(h)e(pac)o(k)o(ets)h(to)g(drop;)
f(pro)o(vided)h(the)g(initial)179 1585 y(seed)20 b(to)e(the)h(random)e(n)o
(um)o(b)q(er)g(generator)j(is)e(the)h(same,)f(ho)o(w)o(ev)o(er,)i(the)f(b)q
(eha)o(vior)f(of)g(the)h(system)f(is)179 1635 y(rep)q(eatable.)137 1718 y ff
(\017)j fg(Nac)o(hos)15 b(is)f(implemen)o(ted)f(in)h(a)h(subset)h(of)e(C++.)
21 b(Ob)r(ject-orien)o(ted)c(programmi)o(ng)12 b(is)i(b)q(ecoming)g(more)179
1768 y(p)q(opular,)f(and)g(w)o(e)h(found)f(that)h(it)f(w)o(as)h(a)f(natural)h
(idiom)d(for)i(stressing)i(the)f(imp)q(ortance)f(of)g(mo)q(dularit)o(y)179
1818 y(and)j(clean)h(in)o(terfaces)g(in)f(building)f(op)q(erating)h(systems.)
26 b(T)m(o)16 b(simplify)d(matters,)k(w)o(e)f(omitted)f(certain)179 1868 y
(asp)q(ects)i(of)f(the)g(C++)h(language:)k(deriv)o(ed)c(classes,)g(op)q(erato\
r)g(and)e(function)h(o)o(v)o(erloading,)f(and)g(C++)179 1917 y(streams.)i(W)m
(e)11 b(also)g(k)o(ept)h(inlines)f(to)g(a)h(minim)n(um)o(.)i(Although)d(our)g
(studen)o(ts)i(did)f(not)f(kno)o(w)g(C++)h(b)q(efore)179 1967 y(taking)h(our)
h(course,)g(w)o(e)h(found)e(that)h(they)g(learned)h(the)f(language)f(v)o(ery)
h(easily)m(.)137 2050 y ff(\017)21 b fg(The)12 b(Nac)o(hos)h(assignmen)o(ts)e
(tak)o(e)i(a)f(quan)o(titativ)o(e)f(approac)o(h)h(to)g(op)q(erating)g(system)
g(design.)18 b(F)m(requen)o(tly)m(,)179 2100 y(the)13 b(c)o(hoice)h(of)e(ho)o
(w)h(to)g(implemen)o(t)d(some)i(piece)i(of)f(op)q(erating)g(system)g(function\
alit)o(y)e(comes)i(do)o(wn)f(to)h(a)179 2150 y(tradeo\013)h(b)q(et)o(w)o(een)
h(simplicit)o(y)c(and)j(p)q(erformance.)k(W)m(e)13 b(b)q(eliev)o(e)h(that)g
(teac)o(hing)f(studen)o(ts)j(ho)o(w)d(to)g(mak)o(e)179 2200 y(informed)8 b
(decisions)i(ab)q(out)g(tradeo\013s)h(is)f(one)g(of)f(the)h(k)o(ey)g(roles)g
(of)g(an)f(undergraduate)i(op)q(erating)f(systems)179 2249 y(course.)18 b(The)
10 b(Nac)o(hos)g(hardw)o(are)h(sim)o(ulation)c(re\015ects)12 b(curren)o(t)f
(hardw)o(are)g(p)q(erformance)f(c)o(haracteristics;)75 2284 y 720 2 v 121 2311
a fm(2)139 2323 y fk(Minix)15 b(tak)o(es)h(the)f(di\013eren)o(t)f(approac)o
(h)g(of)i(running)e(directly)h(on)h(p)q(ersonal)e(computers.)27 b(While)16 b
(this)f(approac)o(h)f(is)j(more)75 2362 y(realistic,)9 b(it)j(mak)o(es)e(debu\
gging)e(more)j(di\016cult.)121 2390 y fm(3)139 2402 y fk(The)e(one)f(asp)q
(ect)f(of)i(the)f(sim)o(ulation)f(w)o(e)i(did)g(not)f(mak)o(e)g(repro)q(ducib)
o(le)e(w)o(as)j(the)g(precise)e(timing)g(of)i(net)o(w)o(ork)f(comm)o(unicat)o
(ion)o(s,)75 2441 y(but)j(since)f(this)h(came)f(at)h(the)g(end)g(of)g(the)g
(semester,)e(it)i(did)g(not)g(seem)f(to)h(cause)g(problems.)965 2574 y fg(3)g
eop
%%Page: 4 4
4 bop 179 307 a fg(w)o(e)13 b(exploit)e(this)i(b)o(y)f(ha)o(ving)g(studen)o
(ts)i(measure)e(the)h(p)q(erformance)f(of)g(their)h(implemen)o(tations)d(on)i
(some)179 357 y(simple)g(w)o(orkloads)h(that)h(w)o(e)g(pro)o(vide.)75 494 y fb
(3)69 b(The)23 b(Assignmen)n(ts)75 585 y fg(Nac)o(hos)12 b(con)o(tains)g(\014\
v)o(e)g(ma)r(jor)e(comp)q(onen)o(ts,)h(eac)o(h)h(the)h(fo)q(cus)f(of)f(one)h
(assignmen)o(t)e(giv)o(en)i(during)f(the)h(semester:)75 635 y(thread)i(manage\
m)o(en)o(t)d(and)h(sync)o(hronization,)h(the)g(\014le)g(system,)g(user-lev)o
(el)g(m)o(ultiprogram)o(m)o(i)o(ng)d(supp)q(ort,)j(the)75 685 y(virtual)g(mem\
ory)f(system,)i(and)g(net)o(w)o(ork)h(supp)q(ort.)20 b(Eac)o(h)14 b(assignmen)
o(t)f(is)i(designed)g(to)f(build)f(up)q(on)i(previous)75 735 y(ones;)21 b(for)
e(instance,)h(ev)o(ery)g(part)f(of)f(Nac)o(hos)h(uses)h(thread)f(primitiv)o
(es)e(for)i(managing)d(concurrency)m(.)34 b(This)75 784 y(re\015ects)16 b(par\
t)e(of)f(the)i(c)o(harm)e(of)g(dev)o(eloping)g(op)q(erating)h(systems:)k(y)o
(ou)c(get)g(to)f(\\use)i(what)f(y)o(ou)f(build.")137 834 y(In)k(this)g(sectio\
n,)h(w)o(e)f(discuss)h(eac)o(h)f(of)f(the)i(\014v)o(e)f(assignmen)o(ts,)f(inc\
luding)g(the)i(hardw)o(are)f(sim)o(ulation)d(fa-)75 884 y(cilities)k(and)f
(the)i(op)q(erating)f(system)g(structures)i(w)o(e)f(pro)o(vide,)f(along)f(wit\
h)h(what)g(w)o(e)g(ask)g(the)h(studen)o(ts)g(to)75 934 y(implemen)o(t.)30 b
(Studen)o(ts)20 b(w)o(ork)o(ed)f(in)f(pairs,)h(and)g(w)o(e)g(conducted)h(15)f
(min)o(ute)e(graded)i(design)g(reviews)h(after)75 984 y(ev)o(ery)c(assignmen)
o(t.)23 b(W)m(e)15 b(found)g(that)h(the)h(design)e(reviews)i(w)o(ere)g(v)o
(ery)f(helpful)f(at)g(encouraging)h(studen)o(ts)h(to)75 1034 y(design)d(b)q
(efore)h(implem)o(en)o(ting.)75 1150 y fc(3.1)56 b(Thread)18 b(Managemen)n
(t)75 1226 y fg(The)11 b(\014rst)g(assignmen)o(t)e(in)o(tro)q(duces)j(the)f
(concepts)h(of)e(threads)h(and)g(concurrency)m(.)18 b(W)m(e)10 b(pro)o(vide)g
(studen)o(ts)i(with)e(a)75 1276 y(basic)j(w)o(orking)f(thread)h(system)g(and)
g(an)f(implemen)o(tation)d(of)k(semaphores;)f(the)i(assignmen)o(t)d(is)i(to)g
(implem)o(en)o(t)75 1326 y(Mesa-st)o(yle)k(lo)q(c)o(ks)f(and)g(condition)g
(v)n(ariables)f([Lampson)g(&)h(Redell)g(1980])f(using)h(semaphores,)g(and)g
(then)h(to)75 1376 y(implemen)o(t)c(solutions)j(to)g(a)g(n)o(um)o(b)q(er)f
(of)h(concurrency)i(problems)d(using)h(these)h(sync)o(hronization)f(primitiv)
o(es.)75 1426 y(F)m(or)10 b(instance,)i(w)o(e)e(ask)h(studen)o(ts)h(to)e(prog\
ram)f(a)h(simple)f(pro)q(ducer-consumer)j(in)o(teraction)f(through)f(a)g(b)q
(ounded)75 1475 y(bu\013er,)k(using)g(condition)f(v)n(ariables)g(to)h(denote)
h(the)f(\\bu\013er)h(empt)o(y")e(and)g(\\bu\013er)i(full")d(states.)137 1525 y
(In)17 b(m)o(uc)o(h)f(the)h(same)f(w)o(a)o(y)g(as)h(p)q(oin)o(ters)g(for)f
(b)q(eginning)g(programmers,)f(understanding)j(concurrency)g(re-)75 1575 y
(quires)e(a)g(conceptual)g(leap)g(on)g(the)g(part)g(of)f(studen)o(ts.)26 b
(Con)o(trary)16 b(to)f(Dijkstra)g([Dijkstra)g(1989],)g(w)o(e)h(b)q(eliev)o
(e)75 1625 y(that)f(the)g(b)q(est)h(w)o(a)o(y)e(to)g(teac)o(h)h(concurrency)i
(is)e(with)f(a)g(\\hands-on")g(approac)o(h.)20 b(Nac)o(hos)15 b(helps)g(in)g
(t)o(w)o(o)f(w)o(a)o(ys.)75 1675 y(First,)e(thread)g(managemen)o(t)d(in)h(Nac)
o(hos)i(is)f fe(explicit)p fg(:)16 b(studen)o(ts)d(can)f(trace,)g(literally)e
(statemen)o(t)h(b)o(y)h(statemen)o(t,)75 1724 y(what)17 b(happ)q(ens)i(during)
e(a)g(con)o(text)h(switc)o(h)f(from)f(one)i(thread)g(to)f(another,)h(b)q(oth)
f(from)f(the)i(p)q(ersp)q(ectiv)o(e)i(of)75 1774 y(an)e(outside)g(observ)o
(er)h(and)e(from)f(that)i(of)f(the)i(threads)g(in)o(v)o(olv)o(ed.)28 b(W)m
(e)17 b(b)q(eliev)o(e)i(this)e(exp)q(erience)j(is)e(crucial)75 1824 y(to)d
(de-m)o(ystifying)e(concurrency)m(.)25 b(Precisely)17 b(b)q(ecause)g(C)e(and)
h(C++)g(allo)o(w)d(nothing)i(to)h(b)q(e)g(sw)o(ept)g(under)g(the)75 1874 y
(co)o(v)o(ers,)j(concurrency)g(ma)o(y)d(b)q(e)i(easier)g(to)f(understand)i
(\(although)d(harder)i(to)g(use\))g(in)f(these)i(programmi)o(ng)75 1924 y(lan\
guages)c(than)h(in)g(those)h(explicitly)e(designed)h(for)g(concurrency)m(,)i
(suc)o(h)e(as)g(Ada)g([Mundie)g(&)g(Fisher)h(1986],)75 1974 y(Mo)q(dula-3)c
([Nelson)g(1991],)f(and)i(Concurren)o(t)h(Euclid)f([Holt)f(1983].)137 2023 y
(Second,)k(a)e(w)o(orking)g(thread)i(system,)e(as)h(in)g(Nac)o(hos,)g(allo)o
(ws)e(studen)o(ts)k(to)d(practice)i(writing)e(concurren)o(t)75 2073 y(program\
s)f(and)h(to)g(test)h(out)f(those)g(programs.)20 b(Ev)o(en)c(exp)q(erienced)h
(programmers)c(\014nd)i(it)g(di\016cult)f(to)h(think)75 2123 y(concurren)o
(tly;)f(a)f(widely)f(used)i(OS)g(textb)q(o)q(ok)f(had)g(an)g(error)h(in)e(one)
i(of)e(its)h(concurren)o(t)i(algorithms)c(that)i(w)o(en)o(t)75 2173 y(undetec\
ted)i(for)d(sev)o(eral)h(y)o(ears.)18 b(When)12 b(w)o(e)h(\014rst)g(used)h
(Nac)o(hos,)e(w)o(e)h(omitted)e(man)o(y)g(of)g(the)i(practice)h(problems)75
2223 y(w)o(e)g(no)o(w)f(include,)h(thinking)f(that)h(studen)o(ts)h(w)o(ould)e
(see)i(enough)f(concurrency)i(in)d(the)h(rest)h(of)e(the)i(pro)r(ject.)k(In)
75 2272 y(retrosp)q(ect,)c(the)f(result)g(w)o(as)g(that)f(man)o(y)e(studen)o
(ts)k(w)o(ere)g(still)d(making)f(concurrency)k(errors)g(ev)o(en)f(in)f(the)h
(\014nal)75 2322 y(phase)h(of)e(the)h(pro)r(ject.)137 2372 y(Our)20 b(thread)
g(system)g(is)f(based)h(on)f(F)m(astThreads)h([Anderson)g(et)g(al.)34 b(1989]\
.)f(Our)20 b(primary)e(goal)g(w)o(as)75 2422 y(simplicit)o(y)m(,)e(to)i(reduc\
e)i(the)f(e\013ort)g(required)g(for)f(studen)o(ts)h(to)f(trace)i(the)e(b)q
(eha)o(vior)g(of)g(the)h(thread)g(system.)965 2574 y(4)g eop
%%Page: 5 5
5 bop 75 307 a fg(Our)16 b(implemen)o(tati)o(on)c(is)k(a)e(total)h(of)g(ab)q
(out)g(10)f(pages)i(of)e(C++)i(and)f(a)g(page)g(of)g(MIPS)g(assem)o(bly)g(co)
q(de.)22 b(F)m(or)75 357 y(simplicit)o(y)m(,)8 b(thread)j(sc)o(heduling)f(is)
g(normally)e(non-preemptiv)o(e,)i(but)h(to)f(emphasize)g(the)h(imp)q(ortance)
f(of)f(critical)75 407 y(sections,)19 b(w)o(e)e(ha)o(v)o(e)g(a)g(command-l)o
(ine)d(option)j(that)g(causes)h(threads)h(to)e(b)q(e)g(time-sliced)f(at)h(\\r\
andom",)f(but)75 457 y(rep)q(eatable,)k(p)q(oin)o(ts)f(in)f(the)h(program.)31
b(Concurren)o(t)20 b(programs)d(are)i(correct)h(only)e(if)g(they)h(w)o(ork)f
(when)h(\\a)75 506 y(con)o(text)c(switc)o(h)f(can)g(happ)q(en)g(at)g(an)o(y)g
(time".)75 623 y fc(3.2)56 b(File)17 b(Systems)75 699 y fg(Real)f(\014le)g
(systems)h(can)g(b)q(e)g(v)o(ery)g(complex)e(artifacts.)26 b(The)17 b(UNIX)g
(\014le)g(system,)f(for)g(example,)g(has)g(at)h(least)75 749 y(three)g(lev)o
(els)g(of)e(indirection)h(|)g(the)h(p)q(er-pro)q(cess)h(\014le)f(descriptor)g
(table,)f(the)h(system-wide)f(op)q(en)g(\014le)h(table,)75 799 y(and)e(the)g
(in-core)g(ino)q(de)g(table)g(|)f(b)q(efore)i(one)f(ev)o(en)h(gets)f(to)g(dis\
k)g(blo)q(c)o(ks.)21 b(As)15 b(a)g(result,)g(in)g(order)g(to)g(build)f(a)75
849 y(\014le)f(system)g(that)h(is)f(simple)f(enough)h(for)g(studen)o(ts)i(to)
e(read)h(and)f(understand)h(in)f(a)g(couple)h(of)f(w)o(eeks,)g(w)o(e)h(w)o
(ere)75 899 y(forced)g(to)g(mak)o(e)f(some)g(hard)h(c)o(hoices)g(as)g(to)g
(where)h(to)f(sacri\014ce)h(realism.)137 948 y(W)m(e)g(pro)o(vide)f(a)h(basic)
g(w)o(orking)f(\014le)h(system)f(that)h(is)g(as)g(stripp)q(ed)h(of)e(as)h(m)o
(uc)o(h)f(functionalit)o(y)f(as)i(p)q(ossible.)75 998 y(While)h(the)i(\014le)
g(system)f(has)g(an)g(in)o(terface)h(similar)d(to)i(that)g(of)g(UNIX)h([Ritc)
o(hie)e(&)h(Thompson)f(1974])g(\(cast)75 1048 y(in)g(terms)g(of)f(C++)i(ob)r
(jects\),)g(it)f(also)f(has)i(man)o(y)d(signi\014can)o(t)h(limitations)e(with)
j(resp)q(ect)j(to)d(commercial)d(\014le)75 1098 y(systems:)25 b(there)19 b
(is)e(no)g(sync)o(hronization)g(\(only)g(one)h(thread)g(can)f(access)i(the)f
(\014le)g(system)f(at)g(a)g(time\),)g(\014les)75 1148 y(ha)o(v)o(e)12 b(a)h
(v)o(ery)f(small)f(maxim)n(um)d(size,)13 b(\014les)g(ha)o(v)o(e)g(a)f(\014xed)
h(size)g(once)g(created,)h(there)g(is)e(no)h(cac)o(hing)f(or)h(bu\013ering)75
1197 y(of)g(\014le)h(data,)g(the)g(\014le)g(name)f(space)i(is)f(completely)f
(\015at)h(\(there)h(is)f(no)g(hierarc)o(hical)g(directory)g(structure\),)i
(and)75 1247 y(there)f(is)e(no)h(attempt)f(at)g(pro)o(viding)g(robustness)i
(across)g(mac)o(hine)d(and)i(disk)f(crashes.)20 b(As)14 b(a)f(result,)h(our)g
(basic)75 1297 y(\014le)g(system)g(tak)o(es)g(only)f(ab)q(out)h(15)f(pages)h
(of)g(co)q(de.)137 1347 y(The)h(assignmen)o(t)e(is)h(\014rst,)h(to)f(correct)
h(some)f(of)f(these)j(limitatio)o(ns,)c(and)i(second,)g(to)g(impro)o(v)o(e)f
(the)i(p)q(erfor-)75 1397 y(mance)g(of)g(the)i(resulting)f(\014le)g(system.)
24 b(W)m(e)15 b(list)h(a)f(few)h(p)q(ossible)g(optimizations,)e(suc)o(h)j(as)
f(cac)o(hing)f(and)h(disk)75 1446 y(sc)o(heduling,)c(but)f(it)g(is)g(up)h(to)
f(the)h(studen)o(ts)h(to)e(decide)h(whic)o(h)g(are)f(the)h(most)f(cost-e\013e\
ctiv)o(e)i(for)e(our)g(b)q(enc)o(hmark)75 1496 y(\(the)k(sequen)o(tial)f(writ\
e)g(and)f(then)i(read)f(of)g(a)f(large)h(\014le\).)137 1546 y(A)o(t)20 b(the)
g(hardw)o(are)g(lev)o(el,)g(w)o(e)g(pro)o(vide)f(a)g(disk)g(sim)o(ulator,)g
(whic)o(h)g(accepts)i(\\read)f(sector")h(and)e(\\write)75 1596 y(sector")13 b
(requests)h(and)e(signals)f(the)i(completion)d(of)h(an)h(op)q(eration)g(via)f
(an)h(in)o(terrupt.)18 b(The)13 b(disk)e(data)h(is)g(stored)75 1646 y(in)j
(a)h(UNIX)g(\014le;)h(read)f(and)g(write)g(sector)h(op)q(erations)f(are)g(p)q
(erformed)g(using)g(normal)d(UNIX)k(\014le)e(reads)i(and)75 1696 y(writes.)k
(After)16 b(the)f(UNIX)g(\014le)g(is)g(up)q(dated,)g(w)o(e)g(calculate)g(ho)o
(w)f(long)g(the)i(sim)o(ulated)d(disk)h(op)q(eration)h(should)75 1745 y(ha)o
(v)o(e)f(tak)o(en)g(\(from)f(the)i(trac)o(k)f(and)g(sector)i(of)d(the)i(reque\
st\),)g(and)f(set)h(an)f(in)o(terrupt)h(to)f(o)q(ccur)i(that)e(far)g(in)f(the)
75 1795 y(future.)31 b(Read)18 b(and)g(write)g(sector)h(op)q(erations)g(\(em)
o(ulating)c(hardw)o(are\))k(return)g(immediately;)d(higher)i(lev)o(el)75 1845
y(soft)o(w)o(are)c(is)g(resp)q(onsible)h(for)e(w)o(aiting)g(un)o(til)g(the)h
(in)o(terrupt)h(o)q(ccurs.)137 1895 y(W)m(e)20 b(made)e(sev)o(eral)i(mistak)o
(es)f(along)f(the)j(w)o(a)o(y)e(of)g(dev)o(eloping)g(the)h(Nac)o(hos)g(\014le)
g(system.)35 b(In)19 b(our)h(\014rst)75 1945 y(attempt,)14 b(the)i(\014le)f
(system)g(w)o(as)g(m)o(uc)o(h)f(more)g(realistic)h(than)g(the)h(curren)o(t)g
(one,)g(but)f(it)g(also)f(to)q(ok)h(more)f(than)75 1994 y(four)h(times)f(as)i
(m)o(uc)o(h)e(co)q(de.)23 b(W)m(e)14 b(w)o(ere)j(forced)e(to)h(re-write)g(it)
e(to)i(cut)f(it)g(do)o(wn)g(to)g(something)f(that)h(studen)o(ts)75 2044 y(cou\
ld)c(quic)o(kly)f(read)h(and)g(understand.)18 b(When)12 b(w)o(e)f(handed)g
(out)g(this)g(simpler)f(\014le)h(system,)f(w)o(e)i(did)e(not)h(pro)o(vide)75
2094 y(enough)h(co)q(de)h(for)f(it)g(to)g(b)q(e)g(completely)f(w)o(orking,)g
(lea)o(ving)g(out)h(\014le)g(read)h(and)f(write)g(op)q(erations)h(to)f(b)q
(e)g(written)75 2144 y(b)o(y)h(the)h(studen)o(ts.)19 b(Although)13 b(these)i
(are)f(fairly)e(straigh)o(tforw)o(ard)h(to)g(implemen)o(t,)d(the)k(fact)f(tha\
t)h(our)f(co)q(de)h(did)75 2194 y(not)f(w)o(ork)g(mean)o(t)f(that)h(studen)o
(ts)i(had)e(di\016cult)o(y)f(understanding)i(ho)o(w)f(eac)o(h)h(of)e(the)i
(pieces)h(of)d(the)i(\014le)f(system)75 2243 y(\014t)h(together.)137 2293 y
(W)m(e)i(also)g(initially)e(ga)o(v)o(e)i(studen)o(ts)i(the)f(option)f(of)g
(whic)o(h)g(limitations)e(to)i(\014x;)i(from)c(our)j(exp)q(erience,)i(w)o(e)
75 2343 y(found)f(that)g(studen)o(ts)i(learned)f(the)f(most)g(from)e(\014xing)
i(the)g(\014rst)h(four)f(listed)h(ab)q(o)o(v)o(e.)31 b(The)18 b(result)h(is)f
(that,)75 2393 y(ev)o(en)j(though)f(virtually)e(all)h(mo)q(dern)h(\014le)g
(systems)g(include)g(some)g(form)e(of)h(write-ahead)i(logging)d(or)i(log-)75
2443 y(structure)14 b([Rosen)o(blum)c(&)i(Ousterhout)i(1992],)c(the)j(assignm\
en)o(t)e(no)o(w)g(completely)g(ignores)h(the)h(issue)g(of)e(crash)965 2574 y
(5)g eop
%%Page: 6 6
6 bop 75 307 a fg(reco)o(v)o(ery)m(.)19 b(This)13 b(is)g(simply)f(a)h(tradeo\
\013;)h(in)f(the)h(limited)d(time)i(a)o(v)n(ailable,)d(w)o(e)k(fo)q(cus)g(on)
f(ho)o(w)h(basic)f(\014le)h(systems)75 357 y(w)o(ork,)f(ho)o(w)f(the)i(\014le)
g(abstraction)f(allo)o(ws)f(disk)h(data)g(la)o(y)o(out)f(to)h(b)q(e)h(radical\
ly)e(c)o(hanged)i(without)f(c)o(hanging)f(the)75 407 y(\014le)i(system)g(in)o
(terface,)g(and)f(and)h(ho)o(w)f(cac)o(hing)h(can)g(b)q(e)h(used)g(to)e(impro)
o(v)o(e)f(I/O)i(p)q(erformance.)75 523 y fc(3.3)56 b(Multiprogramm)o(ing)75
600 y fg(In)19 b(the)g(third)g(assignmen)o(t,)f(w)o(e)h(pro)o(vide)g(the)g
(co)q(de)g(to)g(create)h(a)e(user)i(address)g(space,)h(load)d(a)g(Nac)o(hos)h
(\014le)75 649 y(con)o(taining)12 b(an)h(executable)i(image)c(in)o(to)i(user)
h(memory)m(,)c(and)j(then)h(to)f(run)h(the)g(program.)i(Our)e(initial)d(co)q
(de)j(is)75 699 y(restricted)h(to)d(running)h(only)f(a)g(single)g(user)i(prog\
ram)d(at)i(a)f(time.)k(Studen)o(ts)e(expand)f(on)g(this)f(base)i(to)e(supp)q
(ort)75 749 y(m)o(ultiprogram)o(m)o(i)o(ng.)j(Studen)o(ts)g(implemen)o(t)d
(a)h(v)n(ariet)o(y)h(of)f(system)h(calls)f(\(suc)o(h)i(as)f(UNIX)h(fork)e(and)
h(exec\),)h(as)75 799 y(w)o(ell)d(as)i(a)f(user-lev)o(el)h(shell.)j(W)m(e)c
(also)g(ask)g(them)f(to)h(optimize)f(the)i(m)o(ultiprogram)o(m)n(ing)c(p)q
(erformance)j(of)g(their)75 849 y(system)h(on)f(a)h(mixed)e(w)o(orkload)h(of)
g(I/O-)h(and)g(CPU-b)q(ound)g(jobs.)137 899 y(While)d(w)o(e)h(supply)f(relati\
v)o(ely)g(little)g(Nac)o(hos)h(co)q(de)g(as)g(part)g(of)f(this)g(assignmen)o
(t,)g(the)h(hardw)o(are)g(sim)o(ulation)75 948 y(do)q(es)g(require)g(a)e(fair)
h(amoun)o(t)e(of)h(co)q(de.)18 b(W)m(e)11 b(sim)o(ulate)e(the)i(en)o(tire)h
(MIPS)f(R2/3000)e(in)o(teger)j(instruction)f(set)h(and)75 998 y(a)h(simple)f
(single-lev)o(el)g(page)i(table)f(translation)g(sc)o(heme.)18 b(\(F)m(or)13 b
(this)g(assignmen)o(t,)f(a)h(program's)f(en)o(tire)i(virtual)75 1048 y(addres\
s)k(space)h(m)o(ust)d(b)q(e)h(mapp)q(ed)g(in)o(to)f(ph)o(ysical)h(memory;)e
(true)j(virtual)f(memory)d(is)j(left)g(for)g(assignmen)o(t)75 1098 y(four.\))
25 b(In)17 b(addition,)e(w)o(e)i(pro)o(vided)f(studen)o(ts)i(an)e(abstraction)
g(that)h(hid)f(most)f(of)h(the)h(details)f(of)g(the)h(MIPS)75 1148 y(ob)r(jec\
t)e(co)q(de)f(format.)137 1197 y(This)g(assignmen)o(t)e(requires)j(few)f(conc\
eptual)g(leaps,)g(but)g(it)f(do)q(es)h(tie)g(together)h(the)f(w)o(ork)f(of)g
(the)i(previous)75 1247 y(t)o(w)o(o)e(assignmen)o(ts,)g(resulting)h(in)g(a)f
(usable,)h(alb)q(eit)f(limited,)f(op)q(erating)h(system.)18 b(Because)e(our)e
(sim)o(ulator)e(can)75 1297 y(run)k(C)g(programs,)e(our)i(studen)o(ts)h(found)
e(it)g(easy)h(to)g(write)g(the)g(shell)g(and)f(other)i(utilit)o(y)d(programs)
g(\(suc)o(h)j(as)75 1347 y(UNIX)11 b(\\cat"\))g(to)f(exercise)j(their)e(syste\
m.)16 b(\(One)c(o)o(v)o(erly)e(am)o(bitious)e(studen)o(t)k(attempted)e(to)h
(p)q(ort)g(emacs.\))17 b(The)75 1397 y(assignmen)o(t)12 b(illustrates)h(that)
g(there)h(is)f(little)g(di\013erence)h(b)q(et)o(w)o(een)h(writing)d(user)i
(co)q(de)g(and)f(writing)f(op)q(erating)75 1446 y(system)j(k)o(ernel)h(co)q
(de,)h(except)g(that)f(user)g(co)q(de)h(runs)f(in)f(its)h(o)o(wn)f(address)i
(space,)f(isolating)e(the)j(k)o(ernel)f(from)75 1496 y(user)f(errors.)137 1546
y(One)20 b(imp)q(ortan)o(t)e(topic)h(w)o(e)g(c)o(hose)h(to)f(lea)o(v)o(e)g
(out)h(\(again,)f(as)g(a)g(tradeo\013)h(against)e(time)g(constrain)o(ts\))i
(is)75 1596 y(the)d(trend)g(to)o(w)o(ard)f(a)g(small-k)o(ernel)e(op)q(erating)
j(system)f(structure,)i(where)g(pieces)f(of)f(the)h(op)q(erating)f(system)75
1646 y(are)k(split)f(o\013)g(in)o(to)g(user-lev)o(el)h(serv)o(ers)h([W)m(ulf)
d(et)i(al.)34 b(1974].)f(Because)21 b(of)e(its)h(mo)q(dular)d(design,)k(it)e
(w)o(ould)75 1696 y(b)q(e)g(straigh)o(tforw)o(ard)e(to)h(mo)o(v)o(e)f(Nac)o
(hos)i(to)o(w)o(ards)f(a)g(small-k)o(ernel)e(structure,)21 b(except)f(that)e
(\(i\))g(w)o(e)g(ha)o(v)o(e)g(no)75 1745 y(sym)o(b)q(olic)c(debugging)h(supp)
q(ort)i(for)e(user)i(programs)e(and)g(\(ii\))g(w)o(e)h(w)o(ould)f(need)i(a)f
(stub)g(compiler)e(to)i(mak)o(e)e(it)75 1795 y(easy)g(to)g(mak)o(e)e(pro)q
(cedure)k(calls)e(across)h(address)g(spaces.)75 1911 y fc(3.4)56 b(Virtual)18
b(Memory)75 1988 y fg(Assignmen)o(t)13 b(four)g(asks)h(studen)o(ts)h(to)e(rep\
lace)h(their)g(simple)e(memory)f(managemen)o(t)g(co)q(de)j(from)e(the)i(previ\
ous)75 2038 y(assignmen)o(t)f(with)g(a)h(true)g(virtual)f(memory)f(system,)h
(that)h(is,)f(one)h(that)g(presen)o(ts)h(to)f(eac)o(h)g(user)h(program)d(the)
75 2088 y(abstraction)i(of)g(an)f(\(almost\))g(unlimited)f(virtual)h(memory)e
(size)k(b)o(y)f(using)g(main)d(memory)h(as)i(a)g(cac)o(he)h(for)e(the)75 2137
y(disk.)18 b(W)m(e)13 b(pro)o(vide)h(no)g(new)g(hardw)o(are)g(or)g(op)q(erati\
ng)g(system)g(comp)q(onen)o(ts)f(for)h(this)g(assignmen)o(t.)137 2187 y(The)d
(assignmen)o(t)e(has)h(three)h(parts.)18 b(First,)10 b(studen)o(ts)i(implem)o
(en)o(t)c(the)j(mec)o(hanism)c(for)j(page)g(fault)f(handling)75 2237 y(|)k
(their)g(co)q(de)h(m)o(ust)f(catc)o(h)g(the)h(page)f(fault,)f(\014nd)i(the)g
(needed)g(page)g(on)f(disk,)f(\014nd)i(a)f(page)g(frame)f(in)g(memory)75 2287
y(to)18 b(hold)g(the)h(needed)h(page)e(\(writing)g(the)h(old)f(con)o(ten)o
(ts)i(of)d(the)i(page)g(frame)e(to)h(disk)h(if)e(it)h(is)h(dirt)o(y\),)f(read)
75 2337 y(the)f(new)f(page)g(from)e(disk)i(in)o(to)f(memory)m(,)e(adjust)j
(the)h(page)f(table)g(en)o(try)m(,)g(and)g(then)g(resume)h(the)f(execution)75
2386 y(of)g(the)h(program.)25 b(This)16 b(mec)o(hanism)e(can)j(tak)o(e)g(adv)
n(an)o(tage)f(of)g(what)g(the)h(studen)o(ts)h(ha)o(v)o(e)f(built)e(in)i(previ\
ous)965 2574 y(6)g eop
%%Page: 7 7
7 bop 75 307 a fg(assignmen)o(ts:)17 b(the)d(bac)o(king)e(store)i(for)f(an)g
(address)h(space)g(can)f(b)q(e)h(simply)d(represen)o(ted)16 b(as)d(a)g(Nac)o
(hos)g(\014le,)g(and)75 357 y(sync)o(hronization)h(is)g(needed)h(when)f(m)o
(ultiple)e(page)i(faults)f(o)q(ccur)i(concurren)o(tly)m(.)137 407 y(The)j(sec\
ond)g(part)f(of)g(the)h(assignmen)o(t)e(is)g(to)h(devise)h(a)f(p)q(olicy)g
(for)f(managing)f(the)i(memory)e(as)i(a)g(cac)o(he)75 457 y(|)g(for)f(decidin\
g)h(whic)o(h)g(page)h(to)f(toss)g(out)g(when)h(a)f(new)g(page)h(frame)d(is)i
(needed,)i(in)e(what)g(circumstances)75 506 y(\(if)e(an)o(y\))g(to)h(do)g(rea\
d-ahead,)g(whether)h(or)f(not)f(to)h(write)g(un)o(used,)h(dirt)o(y)e(pages)h
(bac)o(k)g(to)f(disk)h(in)f(adv)n(ance)h(to)75 556 y(sp)q(eed)h(later)f(page)
f(fault)g(handling,)g(and)g(ho)o(w)g(man)o(y)f(pages)i(to)f(bring)h(in)f(b)q
(efore)h(initially)d(starting)j(to)f(run)h(a)75 606 y(program)c([Levy)i(&)g
(Lipman)e(1982,)g(Le\017er)j(et)f(al.)j(1989].)137 656 y(These)f(p)q(olicy)e
(questions)i(can)f(ha)o(v)o(e)f(a)h(large)f(impact)f(on)i(o)o(v)o(erall)e(sys\
tem)i(p)q(erformance,)f(in)g(part)h(b)q(ecause)75 706 y(of)h(the)h(large)f
(and)g(increasing)h(gap)f(b)q(et)o(w)o(een)i(CPU)e(sp)q(eed)i(and)e(disk)h
(latency)f(|)g(this)h(gap)f(has)g(widened)h(b)o(y)75 756 y(t)o(w)o(o)g(orders)
i(of)d(magnitude)g(in)h(only)g(the)h(last)f(decade.)30 b(Unfortunately)m(,)18
b(the)g(simplest)e(p)q(olicies)i(often)f(ha)o(v)o(e)75 805 y(unacceptable)f
(p)q(erformance.)k(T)m(o)14 b(encourage)h(studen)o(ts)h(to)f(implem)o(en)o
(t)d(realistic)j(p)q(olicies,)f(the)h(third)g(part)g(of)75 855 y(the)k(assign\
men)o(t)d(is)i(to)g(measure)g(the)g(p)q(erformance)g(of)f(the)i(paging)e(syst\
em)g(on)h(a)g(b)q(enc)o(hmark)f(w)o(e)h(pro)o(vide)75 905 y(|)e(a)g(matrix)f
(m)o(ultiply)e(program)i(where)j(the)f(matrices)f(do)g(not)g(\014t)h(in)f(mem\
ory)m(.)22 b(This)17 b(w)o(orkload)e(is)h(clearly)75 955 y(not)c(represen)o
(tativ)o(e)j(of)d(real-life)g(paging)f(b)q(eha)o(vior,)h(but)h(it)f(is)h(simp\
le)e(enough)h(that)h(studen)o(ts)h(can)f(understand)75 1005 y(the)18 b(impact)
e(of)h(p)q(olicy)g(c)o(hanges)h(on)f(the)h(application.)28 b(F)m(urther,)18 b
(the)g(application)e(illustrates)i(some)e(of)h(the)75 1054 y(problems)c(with)
h(cac)o(hing)g(|)f(small)f(c)o(hanges)j(in)e(the)i(implemen)o(tatio)o(n)d(of)
h(matrix)f(m)o(ultiply)f(can)k(ha)o(v)o(e)e(a)h(large)75 1104 y(impact)e(on)i
(p)q(erformance)g([Lam)d(et)k(al.)i(1991].)75 1220 y fc(3.5)56 b(Net)n(w)n
(orking)75 1297 y fg(Although)12 b(distributed)i(systems)f(ha)o(v)o(e)f(b)q
(ecome)h(increasingly)g(imp)q(ortan)o(t)e(commercially)l(,)f(most)h(instructi\
onal)75 1347 y(op)q(erating)j(systems)h(ha)o(v)o(e)g(not)f(included)h(an)o
(y)f(net)o(w)o(orking)g(comp)q(onen)o(ts.)20 b(T)m(o)14 b(address)h(this,)g
(the)g(capstone)h(of)75 1397 y(the)e(pro)r(ject)h(is)f(to)g(write)g(a)g(signi\
\014can)o(t)f(and)h(in)o(teresting)g(distributed)h(application.)137 1446 y
(A)o(t)d(the)g(hardw)o(are)g(lev)o(el,)f(w)o(e)h(sim)o(ulate)e(the)i(b)q(eha)
o(vior)f(a)h(net)o(w)o(ork)f(of)g(w)o(orkstations,)h(eac)o(h)g(running)f(Nac)
o(hos,)75 1496 y(b)o(y)k(connecting)h(the)g(UNIX)f(pro)q(cesses)j(running)d
(Nac)o(hos)g(via)g(so)q(c)o(k)o(ets.)23 b(The)16 b(Nac)o(hos)f(op)q(erating)g
(system)g(and)75 1546 y(user)k(programs)d(running)i(on)f(it)g(can)h(comm)o
(unicate)d(with)j(other)g(\\mac)o(hines")e(running)i(Nac)o(hos)g(simply)d(b)o
(y)75 1596 y(sending)i(messages)g(in)o(to)f(the)h(em)o(ulated)f(net)o(w)o(ork\
;)i(the)f(transmission)e(is)i(actually)f(accomplished)g(b)o(y)g(so)q(c)o(k)o
(et)75 1646 y(send)e(and)f(receiv)o(e.)19 b(The)14 b(Nac)o(hos)f(net)o(w)o
(ork)h(pro)o(vides)f(unreliable)g(transmission)f(of)g(limited-size)g(pac)o
(k)o(ets)i(from)75 1696 y(mac)o(hine)f(to)g(mac)o(hine.)k(The)e(lik)o(eliho)q
(o)q(d)d(that)i(an)o(y)f(pac)o(k)o(et)h(will)f(b)q(e)h(dropp)q(ed)h(can)f(b)q
(e)h(set)g(as)f(a)f(command-li)o(ne)75 1745 y(option,)h(as)h(can)g(the)g(seed)
h(used)g(to)f(c)o(ho)q(ose)g(whic)o(h)g(pac)o(k)o(ets)h(are)f(randomly)e(c)o
(hosen)i(to)g(b)q(e)g(dropp)q(ed.)22 b(P)o(ac)o(k)o(ets)75 1795 y(are)14 b
(dropp)q(ed)h(but)f(nev)o(er)h(corrupted,)g(so)f(that)g(c)o(hec)o(ksums)g(are)
g(not)g(required.)137 1845 y(T)m(o)d(demonstrate)h(ho)o(w)f(to)h(use)g(the)h
(net)o(w)o(ork)e(and)h(at)g(the)g(same)f(time,)f(ho)o(w)h(to)h(tak)o(e)g(adv)
n(an)o(tage)e(of)i(la)o(y)o(ering,)75 1895 y(w)o(e)17 b(built)f(a)h(simple)e
(p)q(ost)i(o\016ce)g(proto)q(col)g(on)f(top)h(of)f(the)i(net)o(w)o(ork.)27 b
(The)17 b(p)q(ost)g(o\016ce)g(la)o(y)o(er)g(pro)o(vides)g(a)f(set)75 1945 y
(of)e(\\mailb)q(o)o(xes")d(that)k(serv)o(e)g(to)f(route)h(incoming)d(messages)
i(to)h(the)f(appropriate)h(w)o(aiting)e(thread.)19 b(Messages)75 1994 y(sen)o
(t)c(through)f(the)g(p)q(ost)g(o\016ce)h(also)e(con)o(tain)g(a)h(return)h(add\
ress)g(to)f(b)q(e)g(used)h(for)f(ac)o(kno)o(wlegemen)o(ts.)137 2044 y(The)i
(assignmen)o(t)f(is)g(\014rst)i(to)e(implemen)o(t)e(proto)q(col)i(la)o(y)o
(ers)h(to)f(pro)o(vide)h(for)f(the)h(reliable)f(transmission)g(of)75 2094 y
(arbitrary-sized)i(messages,)h(and)e(then)i(to)f(build)f(a)g(distributed)i
(application)d(on)i(top)g(of)f(that)h(service.)29 b(The)75 2144 y(fragmen)o
(tation)10 b(proto)q(col)h(is)h(straigh)o(tforw)o(ard)g(to)f(implemen)o(t)f
(|)h(one)h(need)h(merely)e(to)h(split)f(the)i(message)f(in)o(to)75 2194 y(pie\
ces,)20 b(add)e(fragmen)o(t)e(serial)i(n)o(um)o(b)q(ers,)g(and)g(send)h(them)
e(one)h(b)o(y)g(one.)31 b(Reliabilit)o(y)15 b(is)j(more)f(in)o(teresting,)75
2243 y(requiring)d(a)f(careful)h(analysis)f(and)h(design)g(to)g(b)q(e)g(imple\
men)o(ted)e(correctly)m(.)137 2293 y(The)j(c)o(hoice)g(of)f(ho)o(w)g(to)g(com\
plete)g(the)h(pro)r(ject)h(is)e(left)g(up)h(to)f(the)h(studen)o(ts')h(creativ\
it)o(y)m(.)j(W)m(e)14 b(did)g(mak)o(e)f(a)75 2343 y(few)i(suggestions:)21 b
(m)o(ulti-user)13 b(UNIX)i(talk,)f(a)h(distributed)h(\014le)e(system)h(with)g
(cac)o(hing,)f(a)h(pro)q(cess)i(migration)75 2393 y(facilit)o(y)m(,)11 b(dist\
ributed)k(virtual)e(memory)m(,)e(a)j(gatew)o(a)o(y)f(proto)q(col)h(that)g(is)
g(robust)g(to)g(mac)o(hine)f(crashes.)20 b(P)o(erhaps)75 2443 y(the)14 b(most)
f(in)o(teresting)h(application)e(a)i(studen)o(t)g(built)f(w)o(as)h(a)f(distri\
buted)i(v)o(ersion)e(of)g(the)i(\\battleship")e(game,)965 2574 y(7)g eop
%%Page: 8 8
8 bop 75 307 a fg(with)17 b(eac)o(h)g(pla)o(y)o(er)g(on)g(a)f(di\013eren)o(t)i
(mac)o(hine.)26 b(This)17 b(illustrated)g(the)h(role)e(of)h(distributed)h(sta\
te,)g(since)f(eac)o(h)75 357 y(mac)o(hine)12 b(k)o(ept)h(only)g(its)g(lo)q
(cal)f(view)i(of)e(the)i(gameb)q(oard;)d(it)i(also)g(exp)q(osed)h(sev)o(eral)
g(p)q(erformance)f(problems)f(in)75 407 y(our)i(hardw)o(are)g(sim)o(ulation)d
(co)q(de)k(whic)o(h)f(w)o(e)g(ha)o(v)o(e)f(since)i(\014xed.)137 457 y(P)o(erh\
aps)i(the)f(biggest)f(limitation)d(of)j(our)g(curren)o(t)i(implemen)o(tation)
12 b(is)j(that)h(w)o(e)f(do)h(not)f(mo)q(del)f(net)o(w)o(ork)75 506 y(p)q(erf\
ormance)g(correctly)m(,)g(b)q(ecause)h(w)o(e)f(do)g(not)f(k)o(eep)i(the)f(tim\
ers)f(on)h(eac)o(h)g(of)f(the)i(Nac)o(hos)f(mac)o(hines)e(sync)o(hro-)75 556 y
(nized)j(with)f(one)h(another.)k(There)d(are)f(w)o(ell-kno)o(wn)e(w)o(a)o(ys)
h(of)g(doing)f(this)i([Chandy)e(&)i(Misra)f(1981,)f(Je\013erson)75 606 y(et)i
(al.)i(1987],)12 b(but)i(w)o(e)g(ha)o(v)o(e)g(not)g(implemen)o(ted)e(one)i
(of)f(them)h(y)o(et.)k(With)c(this,)f(w)o(e)h(w)o(ould)f(ha)o(v)o(e)h(b)q(een)
h(able)f(to)75 656 y(include)g(a)g(b)q(enc)o(hmark)g(of)g(the)h(studen)o(t's)
g(net)o(w)o(ork)f(proto)q(cols;)g(it)g(w)o(ould)g(also)f(allo)o(w)g(studen)o
(ts)j(to)e(implem)o(en)o(t)75 706 y(a)g(parallel)e(algorithm)g(\(alb)q(eit)h
(using)h(message-passing\))f(as)h(the)h(\014nal)e(part)h(of)f(the)i(pro)r(jec\
t.)75 843 y fb(4)69 b(Lessons)24 b(Learned)75 934 y fg(Designing)12 b(and)g
(implemen)o(ting)d(Nac)o(hos)k(taugh)o(t)g(us)f(a)h(lot)f(ab)q(out)g(ho)o(w)g
(instructional)h(soft)o(w)o(are)f(should)h(b)q(e)g(put)75 984 y(together,)j
(and)g(pro)o(vided)f(insigh)o(ts)g(on)g(ho)o(w)h(studen)o(ts)g(learn)g(ab)q
(out)f(complex)g(systems.)23 b(In)15 b(this)h(section,)g(w)o(e)75 1034 y(disc\
uss)f(some)e(of)g(the)i(lessons)g(that)f(w)o(e)g(learned.)137 1083 y(In)d(dev\
ising)f(the)h(assignmen)o(ts,)f(w)o(e)h(had)f(to)g(decide)i(whic)o(h)e(pieces)
i(of)e(the)h(Nac)o(hos)g(co)q(de)g(to)f(pro)o(vide)g(studen)o(ts)75 1133 y
(and)j(whic)o(h)g(pieces)h(to)f(lea)o(v)o(e)g(for)f(studen)o(ts)j(to)e(write)
g(themselv)o(es.)18 b(A)o(t)13 b(one)g(extreme,)g(w)o(e)g(could)g(ha)o(v)o
(e)g(pro)o(vided)75 1183 y(studen)o(ts)h(only)e(the)i(hardw)o(are)f(sim)o(ula\
tion)d(routines,)j(lea)o(ving)f(a)g fe(tabula)j(r)n(asa)d fg(for)h(studen)o
(ts)h(to)f(build)f(an)g(en)o(tire)75 1233 y(op)q(erating)e(system)h(from)d
(scratc)o(h.)18 b(This)11 b(seemed)g(impractical,)d(giv)o(en)i(the)h(scop)q
(e)h(of)e(what)g(w)o(e)h(w)o(an)o(ted)f(studen)o(ts)75 1283 y(to)k(ac)o(hiev)
o(e)g(during)f(the)i(semester.)137 1332 y(Th)o(us,)i(when)f(w)o(e)g(taugh)o
(t)g(the)g(course)i(for)d(the)i(\014rst)g(time,)d(our)i(goal)f(w)o(as)h(to)g
(pro)o(vide)f(studen)o(ts)j(with)d(the)75 1382 y(m)o(undane)e(and/or)g(tec)o
(hnically)g(di\016cult)g(parts)i(of)e(the)h(op)q(erating)g(system,)f(suc)o
(h)h(as)g(generic)h(list)e(and)h(bitmap)75 1432 y(managemen)o(t)e(routines)j
(on)f(the)i(one)e(hand,)g(and)h(lo)o(w)e(lev)o(el)i(thread)g(con)o(text)g(swi\
tc)o(h)g(co)q(de)g(on)g(the)g(other.)20 b(W)m(e)75 1482 y(did)12 b(this)h(b)o
(y)f(writing)g(the)h(en)o(tire)g(op)q(erating)f(system)g(from)f(scratc)o(h,)j
(and)e(then)h(ripping)f(out)g(the)h(parts)g(that)g(w)o(e)75 1532 y(though)o
(t)h(studen)o(ts)h(should)f(write)g(for)f(themselv)o(es.)137 1581 y(W)m(e)k
(found,)f(ho)o(w)o(ev)o(er,)h(that)g(co)q(de)h(\(if)e(simple)f(enough\),)i
(can)g(b)q(e)h(v)o(ery)f(useful)g(at)f(illustrating)f(ho)o(w)i(some)75 1631 y
(piece)k(of)f(the)h(op)q(erating)f(system)g(should)g(b)q(eha)o(v)o(e.)37 b
(The)21 b(k)o(ey)f(is)g(that)g(the)h(co)q(de)g(has)g(to)f(b)q(e)h(able)f(to)g
(run)75 1681 y(standalone,)d(without)g(further)h(e\013ort)g(on)f(the)h(part)f
(of)g(studen)o(ts.)29 b(Our)18 b(thread)g(system,)f(although)g(limited,)75
1731 y(could)e(sho)o(w)g(exactly)g(what)g(happ)q(ens)g(when)h(one)f(thread)h
(relinquishes)f(a)g(pro)q(cessor)i(to)d(another)i(thread.)22 b(By)75 1781 y
(con)o(trast,)c(when)f(w)o(e)g(pro)o(vided)g(studen)o(ts)h(with)e(less)i(than)
e(a)h(w)o(orking)f(\014le)g(system,)h(studen)o(ts)h(had)f(di\016cult)o(y)75
1831 y(understanding)f(ho)o(w)e(the)i(pieces)g(of)e(the)i(\014le)f(system)g
(\014t)g(together.)22 b(Similarly)l(,)12 b(w)o(e)j(initially)e(left)i(to)f
(studen)o(ts)75 1880 y(the)j(de\014nition)g(of)f(the)h(system)g(call)e(in)o
(terface,)j(including)e(ho)o(w)g(parameters)h(w)o(ere)g(to)g(b)q(e)g(passed)h
(from)d(user)75 1930 y(co)q(de)g(to)e(the)i(k)o(ernel.)j(A)c(simple)f(example)
f(w)o(ould)h(ha)o(v)o(e)h(largely)f(eliminated)f(the)j(resulting)f(confusion.)
137 1980 y(Of)j(course,)h(reading)f(co)q(de)g(b)o(y)g(itself)f(can)h(b)q(e)h
(a)e(b)q(oring)h(and)f(p)q(oin)o(tless)h(exercise;)j(w)o(e)d(addressed)h(this)
f(b)o(y)75 2030 y(k)o(eeping)f(our)g(co)q(de)h(as)f(simple)f(as)h(p)q(ossible\
,)g(and)g(b)o(y)g(asking)f(studen)o(ts)j(to)d(mo)q(dify)f(it)i(in)f(fairly)g
(fundamen)o(tal)75 2080 y(w)o(a)o(ys.)i(The)c(result)g(is)f(that)g(the)h(assi\
gnmen)o(ts)e(fo)q(cus)i(on)f(the)h(more)e(in)o(teresting)i(asp)q(ects)h(of)d
(op)q(erating)h(systems,)75 2129 y(where)j(tradeo\013s)g(exist)f(so)g(that)g
(there)h(is)f(no)g(single)f(righ)o(t)h(answ)o(er.)137 2179 y(Another)h(lesson)
f(that)g(w)o(e)g(learned)g(from)e(using)i(Nac)o(hos)g(for)f(a)h(semester)g
(w)o(as)g(the)g(need)h(to)f(add)f(a)h(quan)o(ti-)75 2229 y(tativ)o(e)g(asp)q
(ect)i(to)e(the)h(assignmen)o(ts.)k(W)m(e)c(explicitly)e(encouraged)j(studen)
o(ts)f(to)g(implemen)o(t)c(simple)i(solutions)75 2279 y(to)g(the)g(assignmen)
o(ts,)f(to)g(a)o(v)o(oid)f(spra)o(wling)h(complexit)o(y)m(.)j(But)f(b)q(ecaus\
e)g(w)o(e)f(initially)d(had)j(no)f(standard)h(b)q(enc)o(h-)75 2329 y(marks)d
(for)g(measuring)g(the)h(p)q(erformance)g(of)f(studen)o(t)i(implem)o(en)o(tat\
ions,)c(w)o(e)j(had)g(no)g(coun)o(terbalance)g(to)g(sho)o(w)75 2378 y(when)16
b(complexit)o(y)d(w)o(as)i(justi\014ed.)22 b(Studen)o(ts)17 b(tended)f(to)f
(devise)h(o)o(v)o(erly)f(simplistic)e(solutions,)i(where)h(only)e(a)75 2428 y
(bit)i(more)g(e\013ort)h(w)o(as)f(needed)i(to)f(b)q(e)g(realistic.)26 b(W)m
(e)16 b(hop)q(e)h(that)f(the)h(p)q(erformance)g(tests)h(that)e(w)o(e'v)o(e)h
(added)965 2574 y(8)g eop
%%Page: 9 9
9 bop 75 307 a fg(will)12 b(encourage)j(studen)o(ts)h(to)d(iden)o(tify)g(whic)
o(h)h(added)g(complexit)o(y)e(is)i(justi\014ed)g(b)o(y)g(its)g(b)q(ene\014ts.)
75 444 y fb(5)69 b(Conclusions)75 535 y fg(W)m(e)13 b(ha)o(v)o(e)h(written)g
(an)f(instructional)h(op)q(erating)f(system,)g(called)h(Nac)o(hos.)k(It)c(is)
f(designed)i(to)e(tak)o(e)h(adv)n(an)o(tage)75 585 y(of)c(adv)n(ances)h(in)f
(hardw)o(are)h(and)f(soft)o(w)o(are)h(tec)o(hnology)m(,)f(and)g(to)g(illustra\
te)h(the)g(principles)f(of)g(mo)q(dern)g(op)q(erating)75 635 y(systems.)23 b
(These)16 b(include)g(concurrency)m(,)h(cac)o(hing,)e(and)g(distributed)h(com\
putation.)21 b(W)m(e)15 b(ha)o(v)o(e)g(used)i(Nac)o(hos)75 685 y(for)f(one)g
(semester)i(in)d(the)i(undergraduate)h(op)q(erating)e(systems)g(course)i(at)e
(Berk)o(eley)m(,)h(and)f(the)h(results)g(w)o(ere)75 735 y(p)q(ositiv)o(e.)i
(W)m(e)14 b(plan)f(to)i(use)g(Nac)o(hos)f(in)g(future)h(semesters,)g(and)f
(w)o(e)h(ha)o(v)o(e)f(made)f(it)h(publicly)f(a)o(v)n(ailable)g(in)g(the)75 784
y(hop)q(e)h(that)g(others)h(will)e(also)g(\014nd)h(it)f(useful.)75 922 y fb
(6)69 b(Ac)n(kno)n(wledgemen)n(ts)75 1013 y fg(W)m(e)15 b(w)o(ould)g(lik)o
(e)g(to)h(thank)g(the)g(Spring)f(1992)g(CS)h(162)f(class)h(at)g(Berk)o(eley)g
(for)g(serving)g(as)g(guinea)f(pigs)g(while)75 1062 y(Nac)o(hos)i(w)o(as)f
(under)i(dev)o(elopmen)o(t.)24 b(W)m(e)17 b(w)o(ould)e(also)h(lik)o(e)g(to)g
(thank)h(Brian)f(Bershad,)i(Ed)f(Lazo)o(wsk)n(a,)f(John)75 1112 y(Ousterhout,)
k(and)d(Da)o(v)o(e)g(P)o(atterson)i(for)e(their)h(v)o(ery)g(helpful)f(advice)
h(during)f(the)i(design)e(of)g(Nac)o(hos;)j(John)75 1162 y(Ousterhout)d(also)
d(wrote)i(the)f(MIPS)h(sim)o(ulator)c(that)k(w)o(e)f(used.)22 b(W)m(e)15 b
(credit)h(Lance)f(Berc)i(with)e(the)g(acron)o(ym)75 1212 y(for)f(Nac)o(hos:)k
(Not)c(Another)g(Completely)f(Heuristic)h(Op)q(erating)h(System.)75 1349 y fb
(References)75 1440 y fg([Aguirre)f(et)g(al.)f(1991])19 b(Aguirre,)11 b(G.,)e
(Errecalde,)j(M.,)d(Guerrero,)j(R.,)d(Ka)o(vk)n(a,)g(C.,)h(Leguizamon,)e(G.,)
i(Prin)o(tista,)269 1490 y(M.,)18 b(and)g(Gallard,)g(R.)30 b(Exp)q(eriencing)
19 b(MINIX)g(as)f(a)g(Didactical)g(Aid)f(for)h(Op)q(erating)h(Systems)269 1540
y(Courses.)g fe(Op)n(er)n(ating)14 b(Systems)i(R)n(eview)p fg(,)d(25:32{39,)e
(July)j(1991.)75 1623 y([Anderson)h(et)f(al.)f(1989])19 b(Anderson,)c(T.,)f
(Lazo)o(wsk)n(a,)f(E.,)h(and)g(Levy)m(,)g(H.)19 b(The)c(P)o(erformance)f(Impl\
ications)f(of)269 1673 y(Thread)k(Managemen)o(t)e(Alternativ)o(es)i(for)f(Sha\
red)h(Memory)f(Multipro)q(cessors.)27 b fe(IEEE)17 b(T)m(r)n(ansac-)269 1722 y
(tions)e(on)g(Computers)p fg(,)e(38\(12\):1631{1644,)d(Decem)o(b)q(er)k(1989.)
75 1805 y([Bedic)o(hek)h(1990])k(Bedic)o(hek,)13 b(R.)j(Some)11 b(E\016cien)o
(t)i(Arc)o(hitecture)i(Sim)o(ulation)9 b(T)m(ec)o(hniques.)17 b(In)12 b fe
(Pr)n(o)n(c)n(e)n(e)n(dings)i(of)269 1855 y(the)h(1990)g(USENIX)g(Winter)g
(Confer)n(enc)n(e)p fg(,)f(pp.)f(53{63,)f(Jan)o(uary)i(1990.)75 1938 y([Birre\
ll)f(1989])20 b(Birrell,)c(A.)26 b(An)17 b(In)o(tro)q(duction)f(to)h(Programm\
i)o(ng)d(with)i(Threads.)26 b(T)m(ec)o(hnical)17 b(Rep)q(ort)f(#35,)269 1988 y
(Digital)7 b(Equipmen)o(t)h(Corp)q(oration's)h(Systems)g(Researc)o(h)i(Cen)o
(ter,)g(P)o(alo)d(Alto,)h(California,)f(Jan)o(uary)269 2038 y(1989.)75 2121 y
([Chandy)13 b(&)h(Misra)g(1981])19 b(Chandy)m(,)c(K.)g(and)g(Misra,)g(J.)23 b
(Async)o(hronous)16 b(Distributed)g(Sim)o(ulation)c(via)j(a)g(Se-)269 2171 y
(quence)f(of)e(P)o(arallel)g(Computations.)i fe(Communic)n(ations)g(of)g(the)
g(A)o(CM)p fg(,)e(24\(11\):198{206,)e(No)o(v)o(em-)269 2220 y(b)q(er)15 b(198\
1.)75 2304 y([Daley)e(&)h(Dennis)g(1968])19 b(Daley)m(,)14 b(R.)g(and)h(Denni\
s,)g(J.)21 b(Virtual)15 b(Memory)m(,)e(Pro)q(cesses)18 b(and)d(Sharing)f(in)h
(MUL-)269 2353 y(TICS.)j fe(Communic)n(ations)d(of)g(the)g(A)o(CM)p fg(,)e
(11\(5\):306{312,)e(Ma)o(y)i(1968.)965 2574 y(9)g eop
%%Page: 10 10
10 bop 75 307 a fg([Dijkstra)13 b(1989])19 b(Dijkstra,)11 b(E.)k(On)d(the)h(Cru\
elt)o(y)f(of)f(Really)g(T)m(eac)o(hing)g(Computer)g(Science.)17 b fe(Communic)
n(ations)269 357 y(of)e(the)g(A)o(CM)p fg(,)e(32\(12\):1398{1404)o(,)e(Decem)
o(b)q(er)j(1989.)75 440 y([Holt)f(1983])19 b(Holt,)13 b(R.)18 b fe(Concurr)n
(ent)c(Euclid,)h(the)g(UNIX)f(System,)h(and)h(TUNIS)p fg(.)h(Addison-W)m(esle\
y)m(,)c(1983.)75 523 y([Je\013erson)i(et)g(al.)d(1987])20 b(Je\013erson,)14 b
(D.,)e(Bec)o(kman,)h(B.,)f(Wieland,)g(F.,)h(Blume,)f(L.,)g(DiLoreto,)g(M.,)h
(Hon)o(tabas,)269 573 y(P)m(.,)18 b(Laro)q(c)o(he,)h(P)m(.,)f(Studev)n(an)o
(t,)h(K.,)g(T)m(upman,)e(J.,)i(W)m(arren,)f(V.,)h(W)m(edel,)f(J.,)h(Y)m(ounge\
r,)g(H.,)f(and)269 623 y(Bellenot,)11 b(S.)h(Distributed)f(Sim)o(ulation)c
(and)j(the)h(Time)e(W)m(arp)h(Op)q(erating)h(System.)h(In)e fe(Pr)n(o)n(c)n
(e)n(e)n(dings)269 672 y(of)h(the)h(11th)g(A)o(CM)f(Symp)n(osium)h(on)g(Op)n
(er)n(ating)f(Systems)g(Principles)p fg(,)f(pp.)g(77{93,)f(No)o(v)o(em)o(b)q
(er)g(1987.)75 756 y([Kane)14 b(1987])19 b(Kane,)14 b(G.)k fe(MIPS)d(R2000)h
(RISC)f(A)o(r)n(chite)n(ctur)n(e)p fg(.)i(Pren)o(tice)e(Hall,)e(1987.)75 839 y
([Lam)f(et)i(al.)f(1991])19 b(Lam,)11 b(M.,)h(Roth)o(b)q(erg,)g(E.,)g(and)h
(W)m(olf,)d(M.)16 b(The)d(Cac)o(he)g(P)o(erformance)f(and)h(Optimizations)269
888 y(of)c(Blo)q(c)o(k)o(ed)g(Algorithms.)g(In)h fe(Pr)n(o)n(c)n(e)n(e)n(ding\
s)g(of)h(the)g(4th)g(International)g(Confer)n(enc)n(e)f(on)i(A)o(r)n(chite)n
(ctur)n(al)269 938 y(Supp)n(ort)j(for)f(Pr)n(o)n(gr)n(amming)h(L)n(anguages)h
(and)f(Op)n(er)n(ating)g(Systems)p fg(,)e(pp.)h(63{74,)e(April)h(1991.)75 1021
y([Lampson)f(&)i(Redell)f(1980])20 b(Lampson,)11 b(B.)j(and)f(Redell,)f(D.)17
b(Exp)q(eriences)f(with)d(Pro)q(cesses)j(and)d(Monitors)g(in)269 1071 y(Mesa.)
18 b fe(Communic)n(ations)e(of)e(the)h(A)o(CM)p fg(,)e(23\(2\):104{117,)e(F)m
(ebruary)j(1980.)75 1154 y([Le\017er)g(et)g(al.)f(1989])19 b(Le\017er,)f(S.,)
e(McKusic)o(k,)i(K.,)e(Karels,)h(M.,)g(and)f(Quarterman,)g(J.)26 b fe(Design)
18 b(and)g(Imple-)269 1204 y(mentation)d(of)g(the)g(4.3)g(BSD)h(Unix)f(Op)n
(er)n(ating)f(System)p fg(.)k(Addison-W)m(esley)m(,)13 b(1989.)75 1287 y([Lev\
y)h(&)g(Lipman)d(1982])20 b(Levy)m(,)c(H.)g(and)g(Lipman,)e(P)m(.)25 b(Virtua\
l)15 b(Memory)g(Managemen)o(t)h(in)f(the)i(V)-5 b(AX/VMS)269 1337 y(Op)q(erat\
ing)14 b(System.)k fe(Computer)p fg(,)13 b(pp.)g(35{41,)f(Marc)o(h)j(1982.)75
1420 y([Lions)e(1977])19 b(Lions,)14 b(J.)21 b(A)14 b(Commen)o(tary)e(on)i
(the)i(UNIX)e(Op)q(erating)h(System,)f(June)i(1977.)j(Departmen)o(t)14 b(of)
269 1469 y(Computer)f(Science,)i(Univ)o(ersit)o(y)f(of)f(New)h(South)g(W)m
(ales.)75 1553 y([McKusic)o(k)g(et)h(al.)d(1984])20 b(McKusic)o(k,)e(M.,)f
(Jo)o(y)m(,)f(W.,)g(Le\017er,)i(S.,)f(and)g(F)m(abry)m(,)f(R.)27 b(A)17 b(F)m
(ast)f(File)h(System)f(for)269 1602 y(UNIX.)i fe(A)o(CM)d(T)m(r)n(ansactions)
f(on)i(Computer)e(Systems)p fg(,)g(2\(3\):181{197,)d(August)j(1984.)75 1685 y
([Mealy)f(et)h(al.)f(1966])19 b(Mealy)m(,)14 b(G.,)f(Witt,)g(B.,)h(and)h(Clar\
k,)e(W.)19 b(The)c(F)m(unctional)f(Structure)i(of)e(OS/360.)19 b fe(IBM)269
1735 y(Systems)c(Journal)p fg(,)e(5\(1\):3{51,)f(Jan)o(uary)i(1966.)75 1818 y
([Mundie)g(&)g(Fisher)g(1986])20 b(Mundie,)d(D.)f(and)h(Fisher,)h(D.)27 b(P)o
(arallel)16 b(Pro)q(cessing)i(in)f(Ada.)27 b fe(IEEE)18 b(Computer)269 1868 y
(Magazine)p fg(,)c(19\(8\):20{25,)d(August)k(1986.)75 1951 y([Nelson)f(1991])
19 b(Nelson,)14 b(G.,)e(editor.)18 b fe(Systems)d(Pr)n(o)n(gr)n(amming)g(with)
f(Mo)n(dula-3)p fg(.)k(Pren)o(tice)e(Hall,)c(1991.)75 2034 y([P)o(atterson)i
(1992])20 b(P)o(atterson,)13 b(D.)k(Has)c(CS)g(Changed)g(in)f(20)h(Y)m(ears?)
22 b fe(Computing)15 b(R)n(ese)n(ar)n(ch)f(News)p fg(,)e(4\(2\):2{3,)269 2084
y(Marc)o(h)i(1992.)75 2167 y([Ritc)o(hie)f(&)h(Thompson)f(1974])19 b(Ritc)o
(hie,)13 b(D.)g(and)h(Thompson,)e(K.)18 b(The)c(Unix)g(Time-Sharing)e(System.)
17 b fe(Com-)269 2217 y(munic)n(ations)e(of)g(the)g(A)o(CM)p fg(,)e(17\(7\):3\
65{375,)e(July)i(1974.)75 2300 y([Rosen)o(blum)f(&)i(Ousterhout)h(1992])20 b
(Rosen)o(blum,)13 b(M.)h(and)h(Ousterhout,)h(J.)22 b(The)15 b(Design)g(and)g
(Implemen)o(ta-)269 2350 y(tion)9 b(of)h(a)g(Log-Structured)h(File)f(System.)
h fe(A)o(CM)g(T)m(r)n(ansactions)g(on)h(Computer)f(Systems)p fg(,)g(10\(1\):2\
6{)269 2399 y(52,)i(F)m(ebruary)h(1992.)954 2574 y(10)g eop
%%Page: 11 11
11 bop 75 307 a fg([T)m(anen)o(baum)12 b(1987a])19 b(T)m(anen)o(baum,)9 b(A.)14
b fe(Op)n(er)n(ating)e(Systems:)17 b(Design)c(and)g(Implementation)p fg(.)h
(Pren)o(tice-Hall,)269 357 y(1987.)75 440 y([T)m(anen)o(baum)e(1987b])19 b
(T)m(anen)o(baum,)i(A.)42 b(A)22 b(UNIX)g(Clone)g(with)f(Source)i(Co)q(de)f
(for)g(Op)q(erating)g(Systems)269 490 y(Courses.)d fe(Op)n(er)n(ating)14 b
(Systems)i(R)n(eview)p fg(,)d(21\(1\):20{29,)e(Jan)o(uary)j(1987.)75 573 y
([W)m(ulf)e(et)i(al.)f(1974])19 b(W)m(ulf,)12 b(W.,)g(Cohen,)h(E.,)g(Corwin,)
g(W.,)f(Jones,)i(A.,)f(Levin,)g(R.,)f(Pierson,)i(C.,)e(and)i(P)o(ollac)o(k,)
269 623 y(F.)19 b(HYDRA:)14 b(The)g(Kernel)i(of)d(a)h(Multipro)q(cessor)i(Op)
q(erating)e(System.)19 b fe(Communic)n(ations)d(of)f(the)269 672 y(A)o(CM)p fg
(,)e(17\(6\):337{344,)e(June)j(1974.)954 2574 y(11)g eop
%%Trailer
 eod end
%%EOF
